@Component
- @Component는 컴포넌트 스캔에 의해서 빈으로 등록되는 대상을 지정하는 애노테이션.
- 이를 메타 애노테이션으로 가지고 있어도 동일하게 적용이 됨
- 스프링 5 이후에는 일반 빈, 즉 @Component가 달려있는 빈에도 @Bean 지원 → 이걸 life-mode @Bean이라고 함 → 그렇지만 목적이 다름 → life-mode는 클래스 레벨의 빈의 정보를 내부 오브젝트로 접근해서 사용하는 특별한 용도에만 사용 됨
@Configuration
- @Configuration은 하나 이상의 @Bean 메소드를 가지고 있어서 자바 구성정보를 제공하는 것이 목적인 클래스를 지정할 때 사용
- @Bean에 프록시 모드를 기본으로 적용해줘서 직접 메소드 호출을 이용해서 의존 오브젝트를 가져올 때 싱글톤 방식을 보장해주는 것이 기본. 최근엔 프록시 모드를 off시켜서 이 방식을 사용하지 않게 하기도 함
- 자바 코드를 이용해서 어떤 기능을 제공하는 빈을 직접 정의 할 때는 @Configuration/@Bean을 사용