개발/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 뿐만 아니라 여러가지 기능이 있음 -> 보통 이걸 사용한다