본문 바로가기

SPRING

김영한 SPRING 기본편 2일차

스프링 컨테이너

ApplicationContext를 스프링 컨테이너라고 한다.

스프링 컨테이너는 XML , 자바 설정 클래스로 만들 수 있다.

스프링 컨테이너에 등록된 개체를 스프링 빈이라 한다.

스프링 컨테이너에 빈을 등록할때는 @Bean 을 써서 등록한다.

 

@Bean
public MemberService memberService() {
    return new MemberServiceImpl(memberRepository());
}

 

스프링 빈은 getBean() 메소드를 사용해서 찾을 수 있다.

AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService = ac.getBean("memberService",MemberService.class);

 

스프링 빈을 출력할때

BeanDefinition.getRole() 로 스프링 내부에서 사용하는 빈 , 내가 등록한 빈을 구분 할 수 있다.

BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName);

 

일반적으로 사용자가 정의한 빈

BeanDefinition.ROLE_APPLICATION

 

스프링이 내부에서 사용하는 빈

BeanDefinition.ROLE_INFRASTRUCTURE

 

스프링 빈 조회 방법

MemberService memberService = ac.getBean("memberService",MemberService.class);

 

테스트코드 작성 시에 Exception 검사 

assertThrows(NoSuchBeanDefinitionException.class,
        () -> ac.getBean("xxxx",MemberService.class));

자바8의 람다를 이용한다.

 

 

스프링 빈을 조회할 때 타입으로 조회시 같은 타입이 둘 이상 있으면 에러가 난다.

그럴때에는 빈 이름을 지정하면 된다.

MemberService memberService = ac.getBean("memberService", MemberServiceImpl.class);

 

BeanFactory 

스프링 컨테이너의 최상위 인터페이스다.

getBean()을 제공한다.

 

스프링 빈 설정 메타 정보 - BeanDefinition 

스프링 빈 설정 메타정보라 한다.

XML을 읽어서 BeanDefinition 을 만든다.

자바 코드를 읽어서 BeanDefinition 을 만든다.

 

 

출처: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8

'SPRING' 카테고리의 다른 글

김영한 SPRING 기본편 6일차  (0) 2021.12.13
김영한 SPRING 기본편 5일차  (0) 2021.12.13
김영한 SPRING 기본편 4일차  (0) 2021.12.10
김영한 SPRING 기본편 3일차  (0) 2021.12.09
김영한 SPRING 기본편 1일차  (0) 2021.12.08