@Component 는 Spring이 사용자 정의 빈을 자동으로 감지할 수 있도록 하는 주석
명시적인 코드를 작성하지 않고도 Spring은 다음을 수행한다.
@Bean 은 Spring이 runtime에 bean을 수집하기 위해 사용하는 주석이지만, 클래스 수준에서는 사용되지 않는다.
대신, @Bean 으로 메서드에 주석을 달아 Spring이 메서드의 결과를 Spring bean으로 저장할 수 있도록 한다.
@Component 는 클래스 수준 주석이지만 @Bean 은 메서드 수준에 있으므로, @Component 는 클래스의 소스 코드를 편집할 수 있는 경우에만 옵션이다. @Bean 은 항상 사용할 수 있지만 더 장황한 편이다.
@Component 는 Spring의 자동 감지와 호환되지만 @Bean 은 수동 클래스 인스턴스화가 필요합니다.
@Bean 을 사용하면 클래스 정의에서 Bean의 인스턴스화가 분리된다.