사용자 도구

사이트 도구


springframework:javaconfig

문서의 이전 판입니다!


Springframework Java Config

  • Spring 3.1 부터 본격적으로 도입됨.

메소드 인자를 통한 주입 받기

토비의 스프링 3.1 Vol 2. 135 페이지

@Bean
public Printer printer() {
    return new Printer();
}
 
@Bean
public Hello hello(Printer printer) { // 위에 선언된 printer Bean이 주입됨.
   ...
   hello.setPrinter(printer);
}

주의할 점

Java Config 클래스는 무조건 @Configuration 애노테이션을 붙인다

Java Config용 클래스에 @Configuration을 붙이지 않으면 @Bean 애노테이션된 메소드에 의한 객체 생성시 싱글턴이 보장되지 않는다.

Spring의 특정 인터페이스를 구현했을 경우 처리

Bean에 주입할 객체를 @Bean으로 생성하지 않고 바로 new로 생성하여 주입하면 Spring의 InitializingBean과 같은 인터페이스를 구현한 것이 정상적으로 호출되지 않아 문제가 될 수 있다.

예)

// WebMVC의 코드 중 일부
// 아래 코드에서 openEntityManagerInViewIterceptor는 BeanFactoryAware 인터페이스를 구현하고 있지만
// 해당 기능이 제대로 작동하지 않게 된다.
OpenEntityManagerInViewInterceptor openEntityManagerInView = new OpenEntityManagerInViewInterceptor();
openEntityManagerInView.setEntityManagerFactory(entityManagerFactory);
 
// ApplicationContext를 주입받아서 OEMIV 객체에 직접 주있해줬음.
// 가장 좋은 것은 OEMIV를 직접 빈(''@Bean'')으로 생성하는 것.

Java Config간의 상호 의존

XxxJavaConfig 클래스와 YyyJavaConfig가 서로가 생성하는 객체를 주입받으려고 하면 문제가 된다. 현재 확인된 바로는 무한 루프를 도는 듯한 상황이 연출되었다. 이런 상황은 만들지 말 것.

springframework/javaconfig.1387379756.txt.gz · 마지막으로 수정됨: 2013/12/19 00:15 저자 kwon37xi