minOS

스프링 컨테이너와 스프링 빈(1) 본문

TIL/김영한의 스프링 핵심 원리

스프링 컨테이너와 스프링 빈(1)

minOE 2024. 1. 31. 20:50
728x90

스프링 컨테이너 생성

ApplicationContext applicationContext = 
				new AnnotationConfigApplicationContext(AppConfig.class);


1) ApplicationContext를 스프링 컨테이너이고 인터페이스다.
2) 스프링 컨테이너는 XML 기반으로 만들 수 있고 , 애노테이션 기반의 자바 설정 클래스로 만들 수 있다.
3)'new AnnotationConfigApplicationContext(AppConfig.class);' 이 클래스는 ApplicationContext의 구현체이다.



스프링 컨테이너 생성 과정

1. 스프링 컨테이너 생성

1)new AnnotationConfigApplicationContext(AppConfig.class);
2) 스프링 컨테이너 생성할 때는 구성 정보를 지정해주어야 한다.
3)여기서는 AppConfig.class를 구성 정보로 지정했다.


2. 스프링 빈 등록

@Configuration // 설정 정보
public class AppConfig {

    @Bean //스프링 컨테이너에 빈 등록
    public MemberService memberService(){
        return new MemberServiceImpl(memberRepository());
    }

    @Bean
    public MemberRepository memberRepository(){
        return new MemoryMemberRepository();
    }

    @Bean
    public OrderService orderService(){
        return new OrderServiceImpl(memberRepository(),discountPolicy());
    }

    @Bean
    public DiscountPolicy discountPolicy(){
        //return new FixDiscountPolicy();
        return new RateDiscountPolicy();
    }
}

 

1) 스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용해서 스프링 빈을 등록한다.
2) 빈 이름은 메서드 이름을 사용할 수 있다.
3) 빈 이름을 직접 부여할 수도 있다. ex) @Bean(name = "Service2")
 
*주의
빈 이름은 항상 다른 이름을 부여해야 한다.
     

3.스프링 빈 의존관계 설정 - 준비


4. 스프링 빈 의존관계 설정 - 완료

1) 스프링 컨테이너는 설정 정보를 참고하여 의존 관계를 주입(DI) 한다.
2) 단순히 자바 코드를 호출하는 것 같지만 , 차이가 있다. 이 차이는 싱글톤 컨테이너에서 설명한다.


참고
스프링은 빈을 생성하고, 의존관계를 주입하는 단계가 나누어져 있다. 자세한 내용은 의존관계 자동 주입에서 설명한다.

정리
스프링 컨테이너 생성 -> 설정 정보 참고 해서 스프링 빈 등록 -> 의존 관계 설정 

 

728x90