728x90
스프링 코어 중 하나인 DI에 대한 개요, 특징, 이용 방법 및 DI를 어떻게 이용할 것인가에 대한 설명
2.5 JavaConfig를 이용한 DI
- XML파일 작성 대신에 Java 코드를 작성한다.
2.5.1 예제를 이용한 JavaConfig
https://devhooney.tistory.com/9
- 이 글에서 작성했던 ProductService, ProductDao 등의 샘플을 JavaConfig로 수정한다.
- AppConfig.java
@Configuration
public class AppConfig {
@Bean
public ProductServiceImpl productService() {
return new ProductServiceImpl();
}
@Bean
public ProductDaoImpl productDao() {
return new ProductDaoImpl();
}
}
- @Configuration은 이 Java클래스가 JavaConfig임을 나타내는 어노테이션이다.
- @Bean은 XML의 beam태그에 해당한다.
- 참조할 productDao는 어떤 수단으로 취득해야 한다.
(1) @Bean 메소드를 인수로부터 취득
- @Bean 메소드의 인수에 설정하고 싶은 오브젝트를 설정한다.
- 그리고 인수를 이용해서 오브젝트를 생성한다.
...(생략)...
@Bean
public ProductService productService(ProductDao pd) {
return new ProductServiceImpl(pd);
}
...(생략)...
(2) @Bean 메소드를 불러들여서 취득
- @Bean 메소드를 실행하고, 그 결과를 이용해서 인젝션을 실행한다.
...(생략)...
@Bean
public ProductDao productDao() {
return new ProductDaoImpl();
}
@Bean
public ProductSerivce productService() {
return new ProductServiceImpl(productDao());
}
...(생략)...
(3) @Autowired 프로퍼티에서 취득
- @Autowired 어노테이션을 설정해두면 DI 컨테이너의 오브젝트가 설정되고, 이것을 이용해서 오브젝트를 생성한다.
...(생략)...
@Autowired
private ProductDao pd;
@Bean
public ProductService productService() {
return new ProductServiceImpl(pd());
}
...(생략)...
728x90
'개발 > Java & Kotlin' 카테고리의 다른 글
[Java] 람다와 스트림(4) (0) | 2022.07.01 |
---|---|
[Java] 람다와 스트림(3) (0) | 2022.06.30 |
[Spring] 스프링 DI (1) (0) | 2022.06.29 |
[Java] 람다와 스트림(2) (0) | 2022.06.29 |
[Spring] @ResponseBody가 null만 가져올 때 (0) | 2022.06.28 |