@ComponentScan
@Component
라는 어노테이션이 위에 붙은 객체는 컴포넌트라고 등록이 된다. 이런 컴포넌트들을 scan하여 알아서 등록해준다.
@Bean
@ComponentScan("패키지")
이 알아서 어노테이션을 찾아 읽어오는데, 왜 @Bean
를 사용하는가?
다른 라이브러리의 객체를 이용하는 경우에, 해당 라이브러리를 직접 편집해서 @Bean
을 붙일 수는 없다.
그럴 때는 ApplicationConfig
파일에서 직접 @Bean
을 붙여서 등록하면 사용이 가능해진다.
등록 방법은 메서드 쓰는 방법과 유사하다. 메서드의 이름은 Bean 등록 시의 아이디와 같다.
@Bean
예시@Bean
public Car car(Engine e) {
Car c = new Car();
c.setEngine(e);
return c;
}
@ComponentScan
도입 전ApplicationConfig01.java
public class AplicationConfig01 {
@Bean
public Foo foo() {
Foo f = new Foo();
return f;
}
}
Foo.java
public class Foo {
// 생성자 등
}
@ComponentScan
도입 후ApplicationConfig02.java
@Configuration
@ComponentScan("패키지명")
public class ApplicationConfig2 {
}
Foo.java
@Component
public class Foo {
// 생성자 등
}