Language/Java

@Component, @Bean, @Autowired가 뭘까?

hu6r1s 2024. 3. 5. 21:34

일단 결과적으로 이 세 어노테이션들은 모두 빈을 등록하는 어노테이션이다.

 

근데 왜 구분하여 사용하는 걸까?

용도가 다르니 구분했겠지.

@Component

@Component는 개발자가 직접 작성한 클래스 파일에 대해 Bean을 등록하기 위한 어노테이션이다.

예를 들면 Controller, Service 어노테이션을 보면 @Component가 붙어있는 것을 볼 수 있다.

@Bean

@Bean개발자가 직접 제어가 불가능한 외부 라이브러리 등을 Bean 등록하기 위한 어노테이션이다.

@Autowired

@Autowired@Component를 통해 등록된 Bean을 다른 곳에서 의존성 주입(DI)을 위해 사용하는 어노테이션이다.

@Autowired를 통해 의존성을 주입하는 방법은 세 가지가 있다.

생성자, Setter, 필드