자바 구성 클래스 2

 

자바 구성 클래스와 XML 혼합 구성

자바 클래스를 사용한 구성 #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과 자바 구성 클래스 모두 추천할만한 방법이다.
  • 따라서 한가지 방법을 선택했을 때 일관되게 사용하는 것이 중요하다.