라라리라
[Spring] @Configuration과 @Bean 어노테이션 본문
@Configuration과 @Bean 어노테이션
@Configuration
- 클래스에 붙이는 어노테이션
-@Bean과 함께 사용 해주어야 한다.
@Bean
- 메소드에 붙이는 어노테이션
- 메소드에서 반환되는 객체를 Spring Bean에 등록한다.
@Repository 어노테이션이 없으니 UserRepository 클래스는 더이상 스프링 빈이 아니고,
스프링 컨테이너는 UserService에게 더이상 필요한 의존성 주입을 할 수 없게된다.
@Configuration과 @Bean을 통해 Repository를 스프링 Bean으로 등록해보자.
스프링 컨테이너가 작동할때, @Configuration 클래스들을 스캔하고 @Bean이 붙은 메서드의 반환값을
Spring Bean으로 등록하였기 때문에, @Repository 어노테이션 없이도 필요한 의존성을 주입해줄수 있다.
그럼 @Service와 @Repository는 언제 사용하는게 좋을까?
개발자가 직접만든 클래스를 Spring Bean으로 넣을때 사용하면 좋다.
위 예제의 UserRepository도 @Repository를 사용하는것이 좋다.
@Configuration과 @Bean은 언제 사용하는게 좋을까?
외부 라이브러리, 프레임워크에서 만든 클래스를 등록할 때 사용하면 좋다.
스프링 컨테이너는 어떻게 클래스와 Bean을 스캔할까?
@Component 어노테이션은 뭘까?
- @Component 어노테이션이 붙어있는 클래스들을 '컴포넌트'로 간주한다.
- '컴포넌트'가 붙은 클래스들은 스프링 서버가 실행될때 자동으로 감지된다.
@Component 어노테이션이 단독으로 사용되는 경우 :
컨트롤러,서비스,리포지토리도 아닌데 개발자가 직접 작성한 클래스를 스프링 빈으로 등록할 때 사용되기도 한다.
'코딩 > 다이어리' 카테고리의 다른 글
[Spring] 스프링 Bean을 주입 받는 방법 + @Qualifier (1) | 2024.02.08 |
---|---|
[Spring] 제어의 역전(IoC), 의존성 주입(DI) (0) | 2024.02.08 |
[클린코드] 레이어드 아키텍처란 무엇이고, 왜 쓰는걸까? (0) | 2024.02.07 |
[인텔리제이] 유용한 단축키 (1) | 2024.02.07 |
[MySQL] 제약 조건(constraint) - FOREIGN KEY (0) | 2024.02.05 |