문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
springframework:javaconfig [2013/12/19 00:18] kwon37xi |
springframework:javaconfig [2018/08/29 12:49] (현재) kwon37xi |
||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| ====== Springframework Java Config ====== | ====== Springframework Java Config ====== | ||
| * Spring 3.1 부터 본격적으로 도입됨. | * Spring 3.1 부터 본격적으로 도입됨. | ||
| + | * [[springframework: | ||
| + | ===== 컨텍스트 클래스 ===== | ||
| + | * [[http:// | ||
| ===== 메소드 인자를 통한 주입 받기 ===== | ===== 메소드 인자를 통한 주입 받기 ===== | ||
| * 한 @Configuration 클래스안에서 FactoryBean으로 생성한 Bean과 그것을 주입 받는 빈이 있을 때, 메소드 직접 호출을 통한 주입이 애매하다. 빈을 생성하는 메소드를 직접 호출하면 FactoryBean 객체가 리턴되기 때문이다. | * 한 @Configuration 클래스안에서 FactoryBean으로 생성한 Bean과 그것을 주입 받는 빈이 있을 때, 메소드 직접 호출을 통한 주입이 애매하다. 빈을 생성하는 메소드를 직접 호출하면 FactoryBean 객체가 리턴되기 때문이다. | ||
| * 이 때, @Bean 메소드의 인자로 FactoryBean 이 생성한 객체를 주입 받으면 된다. | * 이 때, @Bean 메소드의 인자로 FactoryBean 이 생성한 객체를 주입 받으면 된다. | ||
| - | * 토비의 스프링 3.1 Vol 2. 135 페이지 | + | * **@Bean이 붙은 메소드는 기본적으로 @Autowired가 붙은 메소드 처럼 동작한다.** - 토비의 스프링 3.1 Vol 2. 135 페이지 |
| + | * '' | ||
| + | * 한 메소드에서 여러개를 파라미터로 주입 받아도 된다. | ||
| + | * 꼭, 현재 Configuration 클래스가 아닌 다른 곳에서 생성된 Bean도 주입 받을 수 있다. | ||
| <code java> | <code java> | ||
| @Bean | @Bean | ||
| 줄 19: | 줄 25: | ||
| </ | </ | ||
| + | |||
| + | ===== @Primary ===== | ||
| + | * [[http:// | ||
| + | |||
| ===== 주의할 점 ===== | ===== 주의할 점 ===== | ||
| ==== Java Config 클래스는 무조건 @Configuration 애노테이션을 붙인다 ==== | ==== Java Config 클래스는 무조건 @Configuration 애노테이션을 붙인다 ==== | ||
| Java Config용 클래스에 '' | Java Config용 클래스에 '' | ||
| + | |||
| + | 또한 동일 설정 클래스에서 생성한 다른 Bean의 '' | ||
| ==== Spring의 특정 인터페이스를 구현했을 경우 처리 ==== | ==== Spring의 특정 인터페이스를 구현했을 경우 처리 ==== | ||
| 줄 35: | 줄 47: | ||
| // ApplicationContext를 주입받아서 OEMIV 객체에 직접 주있해줬음. | // ApplicationContext를 주입받아서 OEMIV 객체에 직접 주있해줬음. | ||
| + | // 단, 항상 entityManagerFactory를 먼저 주입하고 다은에 applicationContext 주입할 것. | ||
| + | // 안그러면 EMF가 여러개일 때 Autowiring 오류가 발생함. | ||
| // 가장 좋은 것은 OEMIV를 직접 빈('' | // 가장 좋은 것은 OEMIV를 직접 빈('' | ||
| </ | </ | ||
| + | |||
| + | ==== @DependsOn ==== | ||
| + | * Bean들간의 의존성 지정. '' | ||
| + | * [[http:// | ||
| ==== Java Config간의 상호 의존 ==== | ==== Java Config간의 상호 의존 ==== | ||
| 줄 42: | 줄 60: | ||
| 현재 확인된 바로는 무한 루프를 도는 듯한 상황이 연출되었다. | 현재 확인된 바로는 무한 루프를 도는 듯한 상황이 연출되었다. | ||
| 이런 상황은 만들지 말 것. | 이런 상황은 만들지 말 것. | ||
| + | |||
| + | ==== 하나의 JavaConfig 안에서 Field를 통한 Properties 주입과 @Bean Properties 의 상호 의존 ==== | ||
| + | * 하나의 JavaConfig안에서 Field에 '' | ||
| + | @Configuration | ||
| + | public class SomePropsConfig { | ||
| + | @Value("# | ||
| + | private int someValue; | ||
| + | | ||
| + | public Properties myProperties() { | ||
| + | return new Properties() ..... | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | * 이 상황은 항상 발생하지는 않았고, 설정 파일이 여러개일 때 발생했다. | ||
| + | * 가설 | ||
| + | * 설정파일이 여러개일 때 '' | ||
| + | * 해당 다른 설정파일이 '' | ||
| + | * '' | ||
| + | |||
| + | ==== BeanFactoryPostProcessor ==== | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ==== Bean의 List/Map 주입받기 ==== | ||
| + | * [[https:// | ||
| + | |||
| + | <code java> | ||
| + | private List< | ||
| + | private Map< | ||
| + | </ | ||