@Component vs @Bean

NellDora·2024년 2월 5일
0

스프링

목록 보기
3/10

전에 적었던 내용에서

@Configuration을 등록해서 @Bean을 이용해서 설정 한 것이 수동 등록,

@Component를 이용한 자동 등록 (@Repository,@Service 등등)은 자동 등록

그럼 궁금한게 있을 것인데

@Bean이랑 @Component/@ComponenetScan 둘 다 그냥 스프링 컨테이너에 등록해주는 거 아닌가? 왜 따로 되어있는가??

→ 둘 다 스프링 컨테이너에 등록해 준다. 그러나 사용하는 형태가 좀 다르다고 보면 된다고 생각하면 된다.

@Component Vs @Bean

1. Component

component는 클래스 단위에서 사용한다.

위에 사진은 Component를 상속받고 있는 @Repository로 예를 들면
Class 단위인 JpaMinutesRepository에 선언되어있음
즉 스프링 컨테이너에는 JPAMinutesRepository만 등록이 되고 아래 메서드인 save, findById는 등록이 되지 않는다.

클래스 그 자체만 등록

2. Bean

주로 @Configuration이 선언된 클래스에서 사용하며 컨테이너에 등록 가능하다

개발자 입맛대로 커스터마이징 등등 사용 가능

UserRepository, ProjectRepository, ParticipantRepository 선언 메서드를 각각 @Bean으로 선언하므로써 스프링 컨테이너에 메서드를 등록

즉, 개발자가 직접 메서드를 통해 빈을 등록하고 커스터마이징을 할 수 있음

profile
불타오르는 백엔드 개발자

0개의 댓글