-
@Bean vs @ComponentSpring Framework 2022. 5. 24. 01:55반응형
@Bean과 @Component를 언제 사용해야 할지 명확하게 대답할 수 없었기 때문에 이를 공부하고자 했습니다.
@Bean과 @Component란?
Ioc Container는 @Configuration, @Bean, @Component, @Repository, @Service, @Controller가 달린 클래스를 감지하여 빈을 가져오기 옵니다.
이때 대표적으로 빈을 등록하는 어노테이션이 바로 @Bean과 @Component입니다.
(실제로 @Repository, @Service, @Controller 내부에는 @Component가 정의되어 있습니다.)
@Bean이란?
단일 bean을 명시적으로 선언하는 데 사용됩니다.
클래스 정의에서 빈 선언을 분리하고 선택한 방식대로 빈을 만들고 구성할 수 있습니다.
@Component란?
Component Scan을 사용하여 빈을 자동으로 감지하고 자동 구성하는 데 사용됩니다.
@Component 어노테이션이 달린 클래스를 찾아 자동으로 빈을 등록합니다.
둘 다 Spring Bean을 생성할 때 사용하는 어노테이션인데 왜 2개로 나누어져 있을까요?
(@Bean)https://jojoldu.tistory.com/27 @Bean의 경우에는 개발자가 컨트롤이 불가능한 외부 라이브러리들을 Bean으로 등록하고 싶은 경우에 사용합니다.
ObjectMapper의 경우 ObjectMapper Class에 @Component를 선언할 수 없으므로 ObjectMapper의 인스턴스를 생성하는 메서드를 만들고 해당 메서드에 @Bean을 선언하여 등록합니다.
(@Component)https://jojoldu.tistory.com/27 반대로 개발자가 직접 만든 클래스 즉, 직접 컨트롤이 가능한 경우에는 @Component를 사용합니다.
이때 개발자가 생성한 Class에는 @Bean으로 관리할 수 있을까요?
정답은 불가능합니다.
@Bean과 @Component는 각자 선언할 수 있는 타입이 정해져있어 해당 용도 외에는 컴파일 에러를 발생시킵니다.
(@Target이 METHOD로 지정되어 있지만, TYPE은 없다) (@Target이 TYPE로 지정되어 Class위에서만 선언될수 있음을 알수 있다.) 결론
@Bean @Component 메소드에 사용 클래스에 사용 개발자가 컨트롤이 불가능한
외부 라이브러리 사용시 사용개발자가 직접 컨트롤이 가능한
내부 클래스에 사용출처
https://jojoldu.tistory.com/27
@Bean vs @Component
Spring으로 개발을 하다보면 @Bean과 @Component를 언제 써야할지 헷갈릴때가 있다. 둘다 목적이 명확하지 않은 Bean을 생성할때 사용하는 어노테이션인데 왜 2개로 나누어져있나 궁금했었는데, 박재성
jojoldu.tistory.com
https://ecsimsw.tistory.com/629
@Component, @Bean 차이점
스프링 컨테이너 스프링 컨테이너는 설정 파일을 읽어서 빈 정보를 읽고 저장/관리한다. Configuration / Bean 빈 설정은 xml 방식과 java Config 방식이 있다. xml 방식, java Config 방식 모두 빈을 명시해야
www.blog.ecsimsw.com
https://youngjinmo.github.io/2021/06/bean-component/
Bean과 Component 차이
스프링은 개발의 제어권이 스프링 컨테이너(IoC 컨테이너)에 있다고 한다. 그래서 이를 IoC(Inversion Of Control), 제어의 역전이라고 한다. 스프링이 개발자 대신 객체를 제어하기 위해서는 객체들이
youngjinmo.github.io
'Spring Framework' 카테고리의 다른 글
@Transactional 어노테이션이란? (0) 2022.09.14 @SpringBootApplication의 역할 (0) 2022.06.24 필터와 인터셉터의 차이점 (0) 2022.05.22 스프링 부트 - 회원 관리 예제 실습 (순수 JDBC로 H2 데이터베이스 연동) (0) 2022.04.24 스프링 부트 - 회원 관리 예제 실습 (H2 데이터베이스 설치) (0) 2022.04.16