클래스에 적용되며, 해당 클래스를 Spring의 설정 파일로 지정한다.
설정 파일은 Bean 어노테이션이 적용된 메서드를 포함하고, 빈의 생성과 관리, 의존성 주입 등을 정의한다.
Spring 컨테이너에 의해 스캔되어 설정 정보로 사용된다.
@Bean @Component 둘다 Spring(IOC) Container에 Bean을 등록하도록 하는 메타데이터를 기입하는 어노테이션이다.
메소드에 적용되며, 해당 메서드가 반환하는 객체를 Spring의 Bean으로 등록한다.
Bean 어노테이션이 적용된 메서드는 @Configuration 어노테이션이 적용된 클래스에 위치해야 한다.
String 컨테이너는 설정 파일에서 @Configuration 어노테이션이 적용된 클래스를 스캔하고, 빈으로 적용된 메서드를 호출하여 해당 객체를 생성하고 빈으로 등록한다.
클래스에 적용되며, 해당 클래스는 Spring 컴포넌트로 등록한다.
어노테이션이 적용된 클래스는 Spring 컨테이너에서 인스턴스화 되어 관리된다.
Component 어노테이션을 확장한 @Controller
@Service
@Repository
등이 있으며, 각각 특정 계층에서 사용된다.
@Bean
은 개발자가 직접 객체를 생성하고 빈으로 등록하는 메서드에 적용되는 반면, @Component
는 클래스를 빈으로 등록한다.
@Bea
n은 메서드 단위로 빈을 정의하는 반면, @Component
는 클래스 단위로 빈을 정의한다.
@Bean
은 @Configuration 어노테이션이 적용된 설정 파일에 위치해야 하지만, @Component
는 개별 클래스에 적용된다.
@Bean
은 리턴 타입이 빈의 타입이 되지만, @Component
는 클래스 자체가 빈으로 등록된다.
@Bean
: 개발자가 객체의 생성과 설정에 관여하고자 할 때 사용된다.
@Component
: Spring에 의해 관리되는 컴포넌트로 사용된다.
@Configuration
: 설정 파일을 정의하여 빈의 생성과 관리, 의존성 주입 등을 설정한다.