✔ Inflearn 강의 수강 내용 정리글입니다!
ApplicationContext applicationContext =
new AnnotationConfigApplicationContext(AppConfig.class);
📍 스프링 컨테이너
new AnnotationConfigApplicationContext(AppConfig.class)
- 스프링 컨테이너 생성 시에는 구성 정보를 지정해야 함
- 여기서는 AppConfig.class 를 구성정보로 지정
MemberService memberService = ac.getBean("memberService", MemberService.class);
MemberService memberService = ac.getBean(MemberService.class);
같은 타입에 속하는 여러 빈이 존재할 경우 Exception 발생 주의
MemberServiceImpl memberService = ac.getBean("memberService", MemberServiceImpl.class);
구체 타입으로 조회하면 변경 시 유연성이 떨어짐
MemberService memberService = ac.getBean("memberService", MemberService.class);
Map<String, MemberRepository> beansOfType = ac.getBeansOfType(MemberRepository.class);
부모 타입으로 조회하면 자식 타입도 함께 조회
모든 자바 객체의 최고 부모인 Object 로 타입으로 조회하면 모든 스프링 빈 조회
부모 타입으로 조회 시 자식이 둘 이상 있으면 중복 오류 발생
부모 타입으로 모두 조회하기
Map<String, DiscountPolicy> beansOfType = ac.getBeansOfType(DiscountPolicy.class);
ApplicationContext ac = new GenericXmlApplicationContext("appConfig.xml");
<bean id="memberService" class="hello.core.member.MemberServiceImpl">
<constructor-arg name="memberRepository" ref="memberRepository" />
</bean>
@Bean
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
위 두개의 코드는 같은 의미!
- Reader 를 사용해서 설정 정보를 읽고 BeanDefinition 을 생성
[출처 - Inflearn : 스프링 핵심 원리 - 기본편] 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/dashboard