프로젝트 진행을 위한 초기 설정을 하던 중 궁금한 것이 생겨서 정리해두려고 한다.
스프링이 개발자 대신 객체를 제어하기 위해 (IoC : 제어의 역전) 객체들이 Bean으로 등록되어있어야한다.
과거에는 XML 에 bean 태그로 지정해주었어야했지만 요즘에는 @annotation으로 간단하게 등록할 수 있다.
그 중 configuration 관련 객체들을 등록하는 annotation인
@bean과 @component의 차이는 무엇일까?
Bean | Component |
---|---|
메소드 레벨 | 클래스 레벨 |
개발자 컨트롤 불가한 외부 라이브러리 사용 시 |
개발자가 직접 컨트롤 가능한 내부 클래스에 사용 |
@bean의 경우 선언할 수 있는 타입이 METHOD, method 위에서만 선언 될 수 있다.
@Component의 경우 선언할 수 있는 타입이 TYPE, class 위에서만 선언될 수 있다.
https://youngjinmo.github.io/2021/06/bean-component/
https://jojoldu.tistory.com/27