* ์์กด๊ด๊ณ ?
MemberService ๊ฐ MemberController ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋ณด์ฌ์ฃผ๊ณ ํด์ผ ํ๋ค. ์ด๋ฅผ MemberService ๊ฐ MemberController ๋ฅผ ์์กดํ๋ค๊ณ ํํํ๋ค.
[์คํ๋ง ๋น์ ๋ฑ๋กํ๊ณ ์์กด๊ด๊ณ ์ค์ ํ๊ธฐ]
ํ์ ์ปจํธ๋กค๋ฌ๊ฐ ํ์ ์๋น์ค์ ํ์ ๋ ํ์งํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ์์กด๊ด๊ณ๋ฅผ ์ค๋นํ์.
@Controller
public class MemberController{
private final MemberService memberService;
@Autowired
public MemberController(MemberService memberService){
this.memberService = memberService;
}
}
@Service
public class MemberService{
private final MemeberRepository memberRepository;
@Autowired
public MemberService(MemeberRepository memberRepository){
this.memberRepository = memberRepository;
}
...
}
Controller ํด๋์ค์ @Controller, Service ํด๋์ค์ @Service ์ถ๊ฐ.
์์ฑ์์ @Autowired ๊ฐ ์์ผ๋ฉด ์คํ๋ง์ด ์ฐ๊ด๋ ๊ฐ์ฒด๋ฅผ ์คํ๋ง ์ปจํ ์ด๋์์ ์ฐพ์์ ๋ฃ์ด์ค๋ค.
MemberController ํด๋์ค ์์ MemberService ์ฐ๊ฒฐ. MemberService ์์ MemberRepository ์ฐ๊ฒฐ.
์ด๋ ๊ฒ ๊ฐ์ฒด ์์กด๊ด๊ณ๋ฅผ ์ธ๋ถ์์ ๋ฃ์ด์ฃผ๋ ๊ฒ์ DI(Dependency Injection) ์์กด์ฑ ์ฃผ์ ์ด๋ผ๊ตฌ ํ๋ค.
* ํด๋์ค ์์ ์์ฑ์๊ฐ ๋จ 1๊ฐ ์ด๋ฉด @Autowired ๋ฅผ ์์ ์ด๋ ๋๋ค.
Autowired ๊ฐ Spring Container ์์ @Service ๊ฐ ๋ฌ๋ ค ์๋ MemberService ๋ฅผ ๊ฐ์ ธ์์ ์ฐ๊ฒฐํด์ค๋ค.
[anotation ์ข ๋ฅ]
@Controller
@Autowired
@Service
@Repository
๋ฑ
--> Controller: ์ธ๋ถ ์์ฒญ์ ๋ฐ๊ณ , Service: ๋น์ฆ๋์ค ๋ก์ง ๋ง๋ค๊ณ , Repository: ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ . ์ 3๊ฐ๊ฐ ์ ํํ๋ ํจํด์ด๋ค.
[์คํ๋ง ๋น์ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ 2๊ฐ์ง]
1. ์ปดํฌ๋ํธ ์ค์บ๊ณผ ์๋ ์์กด๊ด๊ณ ์ค์
@Component๊ฐ ์์ผ๋ฉด Spring bean ์ผ๋ก ์๋ ๋ฑ๋ก๋๋ค.
@Controller ๊ฐ Spring bean ์ผ๋ก ์๋ ๋ฑ๋ก๋ ์ด์ ๋ Component ์ค์บ ๋๋ฌธ์ด๋ค.
์ฐธ๊ณ ) ackage ๋ด์ ์๋ anotation ๋ง ์ค์บํด์ spring bean ์ผ๋ก ๋ฑ๋กํ๋ค.
Spring ์ Spring Container ์ Spring bean ์ ๋ฑ๋กํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธํค์ผ๋ก ๋ฑ๋กํ๋ค. ์ ์ผํ๊ฒ ํ๋๋ง ๋ฑ๋กํด์ ๊ณต์ ! ์ฆ, ๊ฐ์ Spring bean ์ด๋ฉด ๋ชจ๋ ๊ฐ์ ์ธ์คํด์ค ์ด๋ค. ์ฑ๊ธํค์ด ์๋๊ฒ ์ค์ ํ ์ ์์ง๋ง ํน๋ณํ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ๋ชจ๋ ์ฑ๊ธํค์ผ๋ก ์์ฑ๋๋ค.
2. ์๋ฐ ์ฝ๋๋ก ์ง์ ์คํ๋ง ๋น ๋ฑ๋กํ๊ธฐ
@Configuration
@Bean
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemmoryMemberRepository();
}
}
@Controller
public class MemberController{
private MemberService memberService;
// ํ๋ ์ฃผ์
//@Autowired private MemberService memberService;
// setter ์ฃผ์
<- ์์กด๊ด๊ณ๊ฐ ์คํ ์ค์ ๋์ ์ผ๋ก ๋ณํ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ผ๋ฏ๋ก ์์ฑ์ ์ฃผ์
๊ถ์ฅ.
//@Autowired
//public void setMemberService(MemberService memberService){
// this.memberService = memberService;
//}
// ์์ฑ์ ์ฃผ์
!!! <- ๋ง์ด ์.
@Autowired
public MemberController(MemberService memberService){
this.memberService = memberService;
}
}
์ค๋ฌด์์๋ ์ฃผ๋ก ์ ํํ๋ Controller, Service, Repository ๊ฐ์ ์ฝ๋๋ Component ์ค์บ์ ์ฌ์ฉํ๋ค.
์ ํํ๋์ง ์๊ฑฐ๋ ์ํฉ์ ๋ฐ๋ผ ๊ตฌํ ํด๋์ค๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ฉด ์ค์ ์ ํตํด Spring bean ์ผ๋ก ๋ฑ๋กํ๋ค.
'๐ฅ๏ธ Web Development Study > Back-End' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Back-end] ์คํ๋ง ์ ๋ฌธ :: ์คํ๋ง DB ์ ๊ทผ ๊ธฐ์ (0) | 2025.01.29 |
---|---|
[Back-end] ์คํ๋ง ์ ๋ฌธ :: ํ์ ๊ด๋ฆฌ ์์ - ์น MVC ๊ฐ๋ฐ (1) | 2025.01.29 |
[Back-End] ์คํ๋ง ์ ๋ฌธ :: ํ์ ๊ด๋ฆฌ ์์ - ๋ฐฑ์๋ ๊ฐ๋ฐ (0) | 2024.12.25 |
[Back-End] ์คํ๋ง ์ ๋ฌธ :: Spring ์น ๊ฐ๋ฐ ๊ธฐ์ด (0) | 2024.12.22 |
[Back-End] ์คํ๋ง ์ ๋ฌธ :: Build, ์คํ (0) | 2024.05.27 |