스프링으로 DI 적용하기

naeganugu·2022년 7월 17일
0

스프링 마스터🌱

목록 보기
10/19

1) 스프링으로 DI 적용하기

지금까지는 순수한 자바 코드로 DI를 적용해왔는데, 스프링을 이용하는 방식으로 바꾸면 다음과 같다.

@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 RateDiscountPolicy();
    }
}

📍 @Configuration 어노테이션을 붙여준다: AppConfig에 설정을 구성한다는 의미.
📍 각 메서드에 @Bean 어노테이션 붙여준다. 이러면 스프링 빈으로 등록이 되어 관리된다.

public class MemberApp {
    public static void main(String[] args) {
        
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
        MemberService memberService = applicationContext.getBean("memberService", MemberService.class);
        ...

위 코드처럼 등록된 스프링빈을 가져온다.

2) 스프링 컨테이너

ApplicationContext를 스프링 컨테이너라고 한다. 예전 코드에서는 AppConfig에서 객체 생성하고 DI를 해줬지만, 이제는 스프링 컨테이너를 쓴다.

스프링 컨테이너는 @Configuration 어노테이션이 붙은 걸 설정(구성) 정보로 사용한다. @Configuration 설정 정보 중에서도 @Bean이 붙은 매서드들은 그 반환 객체를 모두 컨테이너에 등록시킨다. 이 컨테이너에 등록된 객체를 스프링빈이라 한다.



[출처]

스프링 핵심 원리-기본편

profile
seungseung-zanggu

0개의 댓글