개발/Springboot
[Spring 핵심 원리 기본편] 4. 스프링 컨테이너와 스프링 빈
윤J
2023. 8. 6. 19:04
public class OrderApp {
public static void main(String[] args) {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService = applicationContext.getBean("memberService", MemberService.class);
OrderService orderService = applicationContext.getBean("orderService", OrderService.class);
Long memberId = 1L;
Member member = new Member(memberId, "memberA", Grade.VIP);
memberService.join(member);
Order order = orderService.createOrder(memberId, "itemA", 10000);
System.out.println("order = " + order);
System.out.println("order.calculatePrice = " + order.calculatePrice());
}
}
- ApplicationContext (인터페이스) 를 스프링 컨테이너라고 함
- 스프링 컨테이너 생성 -> AppConfig.class 를 구성 정보로 -> @Bean 보고 스프링 빈 등록 -> 의존 관계 주입
- ac.getBeanDefinitionNames() : 스프링에 등록된 모든 빈 이름을 조회함
- ac.getBean() : 빈 이름으로 빈의 객체(인스턴스)를 조회함 ex) impl
- ac.getBeansOfType(MemberRepository.class) : MemberRepository.class 타입인 객체들 모두 조회함 (map으로)
스프링 빈 조회 - 상속 관계
- 모든 자바 객체의 최고 부모인 Object 타입을 조회하면 모든 스프링 빈을 조회한다
부모를 조회하면 자식이 나온다
- BeanFactory : getBean() 제공, 스프링 컨테이너의 최상위 인터페이스
- ApplicationContext : BeanFactory 뿐만 아니라 여러가지 기능이 있음 -> 보통 이걸 사용한다