티스토리 뷰
기본적으로 스프링에서는 @Configuration 어노테이션을 선언해서 POJO를 빈으로 만들 수 있다.
@Configuration 이 선언된 클래스가 많다면 어떻게 해야 할까?
@import 어노테이션을 사용 한다면 구성 클래스를 하나로 모을 수 있다.
아래와 같이 config 클래스가 2개가 존재 한다.
@Configuration
Class AppConfig {
@Bean
public User user() {
User user = new User();
user.setUserId("1");
return user;
}
}
@Configuration
Class IbatisConfiguration {
@Bean
public UserDao userDao() {
UserDao userDao = new UserDao();
return userDao;
}
}
AppConfig의 User 빈 생성 로직에 userId를 "1"이 아닌 db에서 받아와 세팅 하고 싶다.
어떻게 해야 할까?
위에서 말한대로 @Import 어노테이션과 빈 주입을 위해 @Value 어노테이션을 사용 할 수 있다.
@Configuration
@Import(IbatisConfiguration)
@Value("#{userDao}")
private UserDao userDao;
Class AppConfig {
@Bean
public User user() {
User user = new User();
String userId = userDao.getUserId();
user.setUserId(userId);
return user;
}
}
**Spring MVC 에서는 컨테이너 에서 servletContext, rootContext 2개를 생성 한다.
이 컨텍스트들은 각각에 명시된 Configuration 클래스들을 가져와서 적재한다.
이 것이 의미하는 바는
servletContext 는 Controller, Service, ViewResolver 와 같이 dispatcherServlet 와 관련된 config
rootContext 는 resource 나 미들티어 관련 config
이런식으로 모아서 관리 하라는 것이 아닌가 싶다.