@Component 와 @Bean
공통점
둘다 Spring Bean을 만들게 하는 어노테이션이다.
사용상 차이점
@Bean은 @Configuration 어노테이션을 단 클래스 안에서 인스턴스(Component)를 생성하는 메서드 위에 달고
@Component 는 Bean으로 만들 인스턴스의 클래스 위에 단다.
따라서 모양은 아래와 같다.
둘다 A라는 클래스의 스프링 빈을 만들어 낸다. 그래서 완전히 똑같다고 할 수 있다. 다만 내용에 따라 다른 쓰임새로 쓰일 수 있다. 하지만 결론적으로 스프링 빈을 만들어 내는 것이라 생각하자.
하지만 이렇게 만들어진 Bean을 사용하는 법은 같다.
만들어진 스프링 빈을 의존성 주입하여 사용하면 되기 때문
여기서 또 기억하고 싶은것이 의존성 주입 방법인 @Autowired이다.
@Autowired와 @RequiredArgsConstructor
@Autowired
주입 방식이 [1. 필드 주입] [2. 생성자 주입] 두가지다. 근데 필드 주입보다 생성자 주입이 더 좋다.
생성자 주입을 하면 값이 변하지 않아 안전하기 때문..
@RequiredArgsConstructor
그런데 롬복을 사용하면 생성자 주입을 더 간편하게 할 수 있는데 롬복라이브러리가 생성자를 만들어 주기 때문 바로 이 어노테이션 덕분이다.
주의점
생성자 주입시 final을 써주기로 하자