사용자 도구

사이트 도구


springframework:javaconfig

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
springframework:javaconfig [2015/01/27 16:05]
kwon37xi
springframework:javaconfig [2018/08/29 12:49] (현재)
kwon37xi
줄 1: 줄 1:
 ====== Springframework Java Config ====== ====== Springframework Java Config ======
   * Spring 3.1 부터 본격적으로 도입됨.   * Spring 3.1 부터 본격적으로 도입됨.
 +  * [[springframework:bean|SpringFramework Bean]]
 ===== 컨텍스트 클래스 ===== ===== 컨텍스트 클래스 =====
   * [[http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/AnnotationConfigApplicationContext.html|AnnotationConfigApplicationContext]]   * [[http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/AnnotationConfigApplicationContext.html|AnnotationConfigApplicationContext]]
- 
  
 ===== 메소드 인자를 통한 주입 받기 ===== ===== 메소드 인자를 통한 주입 받기 =====
줄 36: 줄 35:
  
 또한 동일 설정 클래스에서 생성한 다른 Bean의 ''@Autowired'' 주입도 안 된다. 또한 동일 설정 클래스에서 생성한 다른 Bean의 ''@Autowired'' 주입도 안 된다.
 +
 ==== Spring의 특정 인터페이스를 구현했을 경우 처리 ==== ==== Spring의 특정 인터페이스를 구현했을 경우 처리 ====
 Bean에 주입할 객체를 ''@Bean''으로 생성하지 않고 바로 new로 생성하여 주입하면 Spring의 InitializingBean과 같은 인터페이스를 구현한 것이 정상적으로 호출되지 않아 문제가 될 수 있다. Bean에 주입할 객체를 ''@Bean''으로 생성하지 않고 바로 new로 생성하여 주입하면 Spring의 InitializingBean과 같은 인터페이스를 구현한 것이 정상적으로 호출되지 않아 문제가 될 수 있다.
줄 51: 줄 51:
 // 가장 좋은 것은 OEMIV를 직접 빈(''@Bean'')으로 생성하는 것. // 가장 좋은 것은 OEMIV를 직접 빈(''@Bean'')으로 생성하는 것.
 </code> </code>
 +
 +==== @DependsOn ====
 +  * Bean들간의 의존성 지정. ''@Component'', ''@Bean''과 함께 지정.
 +  * [[http://www.baeldung.com/spring-depends-on|Controlling Bean Creation Order with @DependsOn | Baeldung]]
  
 ==== Java Config간의 상호 의존 ==== ==== Java Config간의 상호 의존 ====
줄 57: 줄 61:
 이런 상황은 만들지 말 것. 이런 상황은 만들지 말 것.
  
-==== 하나의 JavaConfig 안에서 Field 주입과 @Bean의 상호 의존 ====+==== 하나의 JavaConfig 안에서 Field를 통한 Properties 주입과 @Bean Properties 의 상호 의존 ====
   * 하나의 JavaConfig안에서 Field에 ''@Value''로 주입하는 값이, 동일 설정 파일의 ''@Bean''을 통해 생성된 ''Properties'' 객체의 값일 때 **Circular Dependency**가 발생할 수도 있다.<code java>   * 하나의 JavaConfig안에서 Field에 ''@Value''로 주입하는 값이, 동일 설정 파일의 ''@Bean''을 통해 생성된 ''Properties'' 객체의 값일 때 **Circular Dependency**가 발생할 수도 있다.<code java>
 @Configuration @Configuration
줄 74: 줄 78:
     * 해당 다른 설정파일이 ''SomePropsConfig'' 객체를 가진 설정파일에 있는 또 다른 제3의 Bean에 의존함.     * 해당 다른 설정파일이 ''SomePropsConfig'' 객체를 가진 설정파일에 있는 또 다른 제3의 Bean에 의존함.
     * ''SomePropsConfig'' 객체를 생성하면서 먼저 Field Injection을 시도하고 그 뒤에 ''@Bean''을 생성하는데, Field가 동일 설정 파일의 ''@Bean myProperties'' 객체에 의존하는 상황.     * ''SomePropsConfig'' 객체를 생성하면서 먼저 Field Injection을 시도하고 그 뒤에 ''@Bean''을 생성하는데, Field가 동일 설정 파일의 ''@Bean myProperties'' 객체에 의존하는 상황.
 +
 +==== BeanFactoryPostProcessor ====
 +  * [[http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/config/BeanFactoryPostProcessor.html|BeanFactoryPostProcessor]] 구현체는 ''static''으로 등록해야 한다. 대표적으로 [[http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/support/PropertySourcesPlaceholderConfigurer.html|PropertySourcesPlaceholderConfigurer]]가 그렇다.
 +
 +
 +==== Bean의 List/Map 주입받기 ====
 +  * [[https://www.baeldung.com/spring-autowire-generics|Spring Autowiring of Generic Types | Baeldung]]
 +
 +<code java>
 +private List<DataSource> dataSources; // 모든 DataSource Bean 목록 주입
 +private Map<String, DataSource> dataSourcesByBeanName; // beanName 을 key로 하여 모든 DataSource bean 주입
 +</code>
  
springframework/javaconfig.1422342337.txt.gz · 마지막으로 수정됨: 2015/01/27 16:05 저자 kwon37xi