자바 클래스를 사용한 구성 #2
스프링 혼합 구성
- 자바 구성 클래스와 XML을 혼합하여 사용할 수 있다.
- 특성 사유로 변경이 불가능한 애플리케이션의 경우 유용하다.
- @ImportResource 애노테이션을 이용하여 자바 구성 클래스에서 XML을 읽어온다.
<beans...>
<bean id="provider" class="...ConfigurableMessageProvider"
p:message="Love on the weekend" />
</beans>
...
import org.springframework.context.annotation.ImportResource;
@Configuration
@ImportResource(value="classpath:spring/app-context-xml-01.xml")
public class AppConfigFive {
@Autowired
MessageProvider provider;
@Bean(name="messageRenderer")
public MessageRenderer messageRenderer() {
MessageRenderer renderer = new StandardOutMessageRenderer();
renderer.setMessageProvider(provider);
return renderer;
}
}
- XML에서 자바 구성 클래스를 이용할 수도 있다.
<beans...>
<!--애노테이션 지원 활성화 -->
<context:annotation-config />
<!--자바 구성 클래스 정의 -->
<bean class="...AppConfigSix" />
<bean id="messageRenderer"
class="... StandardOutMessageRenderer"
p:messageProvider-ref="provider" />
</beans>
...
@Configuration
public class AppConfigSix {
@Bean
public MessageProvider provider() {
return new ConfigurableMessageProvider("Love on the weekend");
}
}
...
public class JavaConfigExampleThree {
public static void main(String... args) {
ApplicationContext ctx =
new ClassPathXmlApplicationContext("classpath:spring/app-context-xml-02.xml");
MessageRenderer renderer = ctx.getBean("messageRenderer", MessageRenderer.class);
renderer.render();
}
}
자바 구성 클래스에서는 애플리케이션 인프라 서비스도 정의할 수 있다. @EnableTransactionManagement는 스프링의 트랜잭션 관리 기능을 사용할 것임을 정의하고 @EnableWebSecurity와 @EnableGlobalMethodSecurity는 스프링 보안 컨텍스트를 활성화 한다.
자바 구성과 XML 구성 선택
- XML과 자바 구성 클래스 모두 추천할만한 방법이다.
- 따라서 한가지 방법을 선택했을 때 일관되게 사용하는 것이 중요하다.