자바/스프링, 스프링부트

@Component와 @Bean 그리고 @Autowired 와 @RequiredArgsConstructor

2024. 2. 26. 11:33
글 목차


@Component 와 @Bean

공통점

둘다 Spring Bean을 만들게 하는 어노테이션이다.

 

사용상 차이점

@Bean은 @Configuration 어노테이션을 단 클래스 안에서 인스턴스(Component)를 생성하는 메서드 위에 달고

@Component 는 Bean으로 만들 인스턴스의 클래스 위에 단다.

 

따라서 모양은 아래와 같다.

 

둘다 A라는 클래스의 스프링 빈을 만들어 낸다. 그래서 완전히 똑같다고 할 수 있다. 다만 내용에 따라 다른 쓰임새로 쓰일 수 있다. 하지만 결론적으로 스프링 빈을 만들어 내는 것이라 생각하자.

 

 

하지만 이렇게 만들어진 Bean을 사용하는 법은 같다.

 

만들어진 스프링 빈을 의존성 주입하여 사용하면 되기 때문

 

여기서 또 기억하고 싶은것이 의존성 주입 방법인 @Autowired이다.

 

@Autowired와 @RequiredArgsConstructor

@Autowired

주입 방식이 [1. 필드 주입] [2. 생성자 주입] 두가지다. 근데 필드 주입보다 생성자 주입이 더 좋다.

생성자 주입을 하면 값이 변하지 않아 안전하기 때문..

@RequiredArgsConstructor

그런데 롬복을 사용하면 생성자 주입을 더 간편하게 할 수 있는데 롬복라이브러리가 생성자를 만들어 주기 때문 바로 이 어노테이션 덕분이다.

 

주의점

생성자 주입시 final을 써주기로 하자

@Component와 @Bean 그리고 @Autowired 와 @RequiredArgsConstructor