28일차 - Spring강의(Bean 수동 등록, Type중복 시 Bean 주입)

2024. 8. 22. 18:20·Java & Spring/Spring

□ Bean 수동 등록

  • @Component를 사용하면 자동으로 해당 클래스를 Bean으로 등록해줌
  • 기술적인 문제나 공통적인 관심사를 처리할 때 사용하는 객체들을 수동으로 등록
    • 공통 로그처리와 같은 비즈니스 로직을 지원하기 위한 부가적이고 공통적인 기능들을 '기술지원 Bean'이라 부르고 수동등록 함
    • 수동 등록된 Bean에서 문제가 발생 했을 때 해당 위치를 파악하기 쉬운 장점이있음
@Configuration
public class PasswordConfig {

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}
  1. Bean으로 등록하고자 하는 객체를 반환하는 메서드를 선언
  2. 그 매서드 위에 @Bean 애노테이션 추가
  3. 해당 메서드가 속해있는 클래스에다가 @Configuration 애노테이션 추가

□ 같은 타입의 Bean이 2개일 때

※ @Autowired는 Type으로 우선 스캔하고 그다음 Bean의 이름으로 스캔한다.

 

Food라는 interface가 존재하고

Food를 implements하는 Chicken과 Pizza클래스가 존재할 때

다음과 같이 하나 이상의 Food type이 있다는 오류가 발생한다 세가지 방법으로 해결 할 수 있다.

  1. 정확하게 해당하는 구현체를 명시해준다(Bean의 이름으로)
  2. Bean 객체에 @Primary를 설정한다. 같은 타입이 있더라도 @Primary가 우선적으로 주입된다.
  3. @Qualifier("명칭")을 통해서 명시하여 주입할 수 있다.

※ Qualifier과 Primary중 Qualifier이 더 우선적이다.

 

'Java & Spring > Spring' 카테고리의 다른 글

31일차 - Spring강의(Entity 연관 관계)  (0) 2024.08.27
29일차 - Spring강의(인증과 인가)  (0) 2024.08.23
26일차 - Spring강의(Entity, 영속성 컨텍스트)  (0) 2024.08.20
25일차 - Spring강의(IoC와 DI)  (0) 2024.08.19
25일차 - Spring강의(3 Layer Architecture)  (0) 2024.08.19
'Java & Spring/Spring' 카테고리의 다른 글
  • 31일차 - Spring강의(Entity 연관 관계)
  • 29일차 - Spring강의(인증과 인가)
  • 26일차 - Spring강의(Entity, 영속성 컨텍스트)
  • 25일차 - Spring강의(IoC와 DI)
DJ.Kang
DJ.Kang
백엔드 개발 기록 블로그
  • DJ.Kang
    DJ Hello World
    DJ.Kang
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 이론공부
      • 시스템설계
      • Java & Spring
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java
        • Spring
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • DB
      • AWS
      • CI-CD
      • 웹
      • git & github
      • 구인공고분석
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Java this
    개발로드맵
    프로그래머스 java 기초트레이닝
    데이터 크기
    프로그래머스 java 기초 트레이닝
    java기초
    java super
    자료구조
    데이터 타입
    java 제어자
    java
    java arrays.copyofrnage()
    java 멤버
    java 유클리드 호제법
    java 세수의합
    java enhance switch
    java 에라토스테네스의 체
    java two-pointer
    Java 생성자
    java 메서드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
DJ.Kang
28일차 - Spring강의(Bean 수동 등록, Type중복 시 Bean 주입)
상단으로

티스토리툴바