예전에 문득 'XXXConfig.class 파일들이 굉장히 많아지면 관리가 힘들겠다' 라는 생각을 한 적이 있었습니다.
그런데 오늘 Spring 공식 문서를 살펴보다가 @Import 애노테이션이라는 것을 보았고,
이전에 의문을 가졌던 부분을 해당 애노테이션으로 어느 정도 보완이 된다는 것을 알게 되었습니다.
아래 예시는 공식 문서에 나온 예시입니다.
@Configuration
public class ConfigA {
@Bean
public A a() {
return new A();
}
}
@Configuration
@Import(ConfigA.class) //이 부분!
public class ConfigB {
@Bean
public B b() {
return new B();
}
}
보면 ConfigB에 @Import(ConfigA.class)가 적혀 있는 것을 확인할 수 있습니다.
이렇게 @Import를 해주면 ApplicationContext에 ConfigA와 ConfigB를 모두 등록할 필요 없이 ConfigB만 명시해주면 됩니다.
public static void main(String[] args) {
//ConfigB.class만 명시해 주었습니다!
ApplicationContext ctx = new AnnotationConfigApplicationContext(ConfigB.class);
// now both beans A and B will be available...
A a = ctx.getBean(A.class);
B b = ctx.getBean(B.class);
}
ConfigB.class만 데이터로 넘겨주었는데도 ConfigA에 등록된 A bean도 사용할 수 있습니다.
이걸 보고 역시 Spring team의 통찰력(?)에 감탄하기도 했고, 새로우면서도 편리한 애노테이션을 또 알게되어서 좋았습니다. :)
참고자료
반응형
'Java Spring' 카테고리의 다른 글
Spring Data JPA 더미데이터 생성 후 생각지 못했던 문제와 해결방법! (0) | 2022.10.01 |
---|---|
MapStruct 사용 시 여러 Constructor가 있을 때의 문제점 (5) | 2022.07.31 |