의존성 설정
- 구조
DeptService
@Service @Repository
DeptServiceImpl ---------------> DeptDAO
DeptDAO dao;
public DeptServiceImpl(DeptDAO dao){
this.dao = dao;
}
1) 묵시적으로 설정 방법
가. 생성자 이용 (권장방법)
DeptDAO dao;
public DeptServiceImpl(DeptDAO dao){
this.dao = dao;
}
- 권장방법
권장이유는 하나의 블럭에서 모든 주입이 완료됨.
또한 주입받는 시점이 생성시점이기 때문에 @Autowired 보다 훨씬 빠름.
- 기본생성자는 반드시 없어야 됨.
나. 어노테이션 이용
- @Autowired
예>
@Autowired
DeptDAO deptDAO;
실습
그림 설명
=> DeptDAO 빈 생성하면 IoC 컨테이너 바구니 안에 DeptDAO가 생성됨
=> 서비스 빈 생성하면 IoC 컨테이너 바구니 안에 DeptServiceImpl 생성됨
=> ServiceImpl 생성자 파라미터로 DeptDAO를 넣음, DeptServiceImpl는 DeptDAO를 가진 채로 생성됨
=> 우리가 최종적으로 얻어야 할 건 IoC Container -> 컨테이너 실체는 ApplicationContext니까 ApplicationContext을 통해 빈에 접근한다
DeptDAO, DeptService 두 개의 빈 생성 후에 Application.java 작성
IoC 컨테이너에 빈 생성 ( @Repository, @Service 로 마킹을 했기 때문)
=> 이제 서비스임플을 생성하려면 생성자가 필요한데, 생성자 파라미터로 DeptDAO
=> 서비스는 DeptDAO를 갖고 생성됨
=> 메인스타트인 application.java에서 서비스임플을 접근해야함
-> 접근하려면 IoC컨테이너를 참조해야하는데 IoC의 본체는 ApplicationContext
IoC 컨테이너 ctx에서 안에 있는 빈을 참조 할 수 있다
ctx만 적었을 때는 null이고 값을 받아야함 => 생성자 주입 ( 생성자 안에서 IoC컨테이너 안에 빈을 참조 할수 있다 )
'Spring Boot (Maven)' 카테고리의 다른 글
스프링부트 백그라운드10 ( @Primary, @Qualifier ) (0) | 2024.06.13 |
---|---|
스프링부트 백그라운드9 ( 생성된 빈 접근하는 방법 ) (0) | 2024.06.11 |
스프링부트 백그라운드7 ( 빈 생성방법 - 권장 ) (0) | 2024.06.09 |
스프링부트 백그라운드6 ( 빈 생성방법 - 명시적생성(잘안씀) ) (0) | 2024.06.08 |
스프링부트 백그라운드5 ( 로깅처리 ) (0) | 2024.06.08 |