[Lecture - 김영한님(스프링 핵심 원리 - 기본편)] 스프링으로 전환하기
inflearn에서 김영한님 강의를 들으면서 내용을 정리해보자.
스프링 핵심 원리 - 기본편
스프링으로 전환하기
지금까지 순수한 자바 코드만으로 DI를 적용한 코드를 스프링을 사용해서 작성해보자.
@Configuration
,@Bean
추가1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
@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(); } }
- AppConfig 호출 변경
1 2 3 4 5 6 7 8 9 10 11
public class OrderApp { public static void main(String[] args) { // AppConfig appConfig = new AppConfig(); // MemberService memberService = appConfig.memberService(); // OrderService orderService = appConfig.orderService(); ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); MemberService memberService = applicationContext.getBean("memberService", MemberService.class); OrderService orderService = applicationContext.getBean("orderService", OrderService.class); ... } }
스프링 컨테이너
- ApplicationContext를 스프링 컨테이너라고 한다.
- 기존에는 개발자가 AppConfig를 사용해서 직접 객체를 생성하고 DI를 했지만, 이제부터는 스프링 컨테이너를 통해서 사용한다.
- 스프링 컨테이너는
@Configuration
이 붙은 AppConfig를 설정(구성) 정보로 사용한다.- 여기서
@Bean
이라 적힌 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다. - 이렇게 컨테이너에 등록된 객체를 스프링 빈이라 한다.
- 여기서
- 스프링 빈은
@Bean
이 붙은 메서드의 명을 스프링 빈의 이름으로 사용한다.- memberService or orderService
- 이전에는 개발자가 필요한 객체를 AppConfig를 사용해서 직접 조회했지만, 이제부터는 스프링 컨테이너를 통해서 필요한 스프링 빈(객체)을 찾아야 한다.
- 스프링 빈은
applicationContext.getBean()
메서드를 사용해서 찾을 수 있다.
- 스프링 빈은
- 기존에는 개발자가 직접 Java 코드로 모든 것을 했다면, 이제부터는 스프링 컨테이너에 객체를 스프링 빈으로 등록하고, 스프링 컨테이너에서 스프링 빈을 찾아서 사용하도록 변경되었다.
This post is licensed under CC BY 4.0 by the author.