스프링 핵심 원리 - 기본편 | 스프링 컨테이너 생성, 빈 등록 및 조회

Yunny.Log ·2022년 5월 25일
0

Spring Boot

목록 보기
58/80
post-thumbnail

스프링 컨테이너 생성

  • new ApplicationContext : 스프링 컨테이너
  • ApplicationContext 는 인터페이스
    => 따라서 new AnnotationConfigurationContext() 는 ApplicationContext 를 구현한 구현체이다.
  • 스프링 컨테이너는 어노테이션 기반의 설정 클래스를 통해서 만들 수 있다.

스프링컨테이너 생성 & 빈 등록, 조회

@Configuration
//스프링 컨테이너 생성 
public class AppConfig {
    @Bean
    public MemberService memberService() {
        return new MemberServiceImpl(memberRepository());
    }
    @Bean
    public OrderService orderService() {
        return new OrderServiceImpl(
                memberRepository(),
                discountPolicy());
    }
    @Bean
    public MemberRepository memberRepository() {
        return new MemoryMemberRepository();
    }
    @Bean
    public DiscountPolicy discountPolicy() {
        return new RateDiscountPolicy();
    }
}
  • 빈을 모두 찍어보는 코드

  • 결과, 내가 등록해준 Bean까지 잘 등록이 된 모습

  • 빈 중에서 role 이 ROLE_APPLICATION 인 아이만 찾을 것임, 이건 우리가 등록해준 bean들

  • ROLE_INFRASTRUCTURE 은 스프링 내부에서 사용되는 빈들

            BeanDefinition beanDefinition =
                    ac.getBeanDefinition(beanDefinitionName);

            if (beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION) {
                Object bean = ac.getBean(beanDefinitionName);

스프링 빈 조회 - 기본

  • 스프링 컨테이너에서 스프링 빈을 찾는 기본적인 조회 방법은 이름과 타입을 통해서 찾는 것이다.
ac.getBean(빈이름, 타입)
ac.getBean(타입)

@Test 시

스프링 빈 조회 - 동일한 타입이 둘 이상

  • 같은 타입의 스프링 빈이 중복되면 오류 => 이때는 이름 명시해줘야 한다.
  • 그렇지 않으면 빈이 Unique하지 않다는 에러 등장

0개의 댓글