스프링 컨테이너와 스프링 빈
스프링 컨테이너 생성
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
- ApplicationContext -> 스프링 컨테이너이자 인터페이스
- 스프링 컨테이너 xml기반,Annotation을 기반으로 자바 설정 클래스로 만들 수 있다.
스프링 컨테이너의 생성 과정
- 스프링 컨테이너 생성
- 스프링 컨테이너에 (key : 빈이름(메소드명),value : 빈 객체(메소드 반환명 impl)
- 구성 정보 = AppConfig.class
- 이러한 구성 정보를 지정하고 활용한다.
- 스프링 빈 등록
- 빈 이름은 메서드 이름 사용.
- 빈 이름 직접 부여 가능
@Test
@Bean(name:'sprintHi')
public ~~
3.스프링 빈 의존관계 설정(DI)
@Bean
public MemberService memberService(){
return new MemberServiceImpl(memberRepository());
}
@Bean
public MemberRepository memberRepository(){
return new MemberMeberRepository();
}
컨테이너에 등록된 모든 빈 조회
-> 스프링 컨테이너에 등록한 빈들이 잘 등록 되었는가?
1. 내부 bean + 등록한 bean 출력
2. 내부 bean만 출력
스프링 빈 조회 방법
- ac.getBean(빈이름,타입)
- ac.getBean(타입)
- 예외발생시(NoSuchBeanDefinitionException) 예외를 사용하여 조회
스프링 빈 조회 - 동일한 타입이 둘 이상일때
- 같은 타입의 스프링 빈일때 오류 발생 -> 빈이름 저장하여 조회
- ac.getBeansOfType() -> 모든 빈 조회 가능