기본 _ Ch.6

yuKeon·2022년 11월 9일
0

Spring_Core

목록 보기
6/8
post-thumbnail

1. 컴포넌트 스캔

  • 등록할 스프링 빈이 많아지면 @Bean으로는 한계가 있음
  • 자동 등록이 필요 → @ComponentScan
  • @Component 가 붙은 클래스를 스프링 빈에 등록
@Component
public class RateDiscountPolicy implements DiscountPolicy {}

@Component
public class MemberServiceImpl implements MemberService{}

@Component
public class MemoryMemberRepository implements MemberRepository{}

@Component
public class OrderServiceImpl implements OrderService{}

  • AppConfig는 @Bean 으로 의존관계를 주입
  • 컴포넌트 스캔은 @Autowired 로 의존관계 주입
@Autowired
    public MemberServiceImpl(MemberRepository memberRepository) {this.memberRepository = memberRepository;}

@Autowired
    public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
        this.memberRepository = memberRepository;
        this.discountPolicy = discountPolicy;
    }

스캔 대상

  • @Component
  • @Controller
  • @Service
  • @Repository
  • @Configuration

필터

  • includeFilters : 스캔 대상 추가로 지정
  • excludeFilters : 제외할 대상 지정

빈 중복 등록과 충돌

  • 자동 빈 등록 vs 자동 빈 등록 : ConflictingBeanDefinitionException 예외 발생
  • 자동 빈 등록 vs 수동 빈 등록 : 수동 빈이 우선(자동빈을 오버라이딩)

0개의 댓글