Spring의 @Bean이란?

골두·2024년 6월 17일

Backend

목록 보기
4/10
post-thumbnail

스프링 자체가 관리하는 자바 객체로 IOC (제어의 역전)을 통해 특정 코드를 통해 new Object() 처럼 사용할 때 마다 만드는 것이 아닌 Spring에 의해 관리 당하는 자바 객체를 의미한다.

보통 이런 제어의 역전이 된 객체들은 @Bean, @Component 어노테이션이 붙어있는데 각각 언제 무슨 상황에 써야할 지 헷갈린다.

@Bean

@Bean 어노테이션은 개발자가 컨트롤이 불가능한 외부 라이브러리들을 Bean으로 등록하고 싶을 때 사용하는 어노테이션이다.

보통 외부 라이브러리(직접 만든 내부 코드들이 아닌) 클래스에 @Component 선언이 불가능하며 그런 경우 인스턴스를 생성하는 메소드를 만들고 그 메소드에 @Bean을 선언해 Bean을 등록하는 방식을 이용한다.

@Component

당연히 @Bean과는 반대로 개발자가 제어 가능한 Class에 사용하며 흔히 사용하는 @RestController, @Service에도 컴포넌트가 내장되어있어 편하게 쓸 수 있다.

차이점

@Bean 어노테이션과 @Component 어노테이션의 등록 단계에도 차이점이 존재한다.

@Bean@Component
TargetMETHOD, ANNOTATION_TYPETYPE(클래스, 인터페이스)

사실 @Bean은 Class 에 선언 자체가 불가능해 개발자가 만든 클래스에 선언하려 해도 에러가 나기 때문에 구분하기 좀 쉽다

profile
나 볼려고 만든 블로그 (블로그 이전: https://goldfrosch.tistory.com/)

0개의 댓글