728x90
- 순수 Java에서 Spring 코드로 변환
- 저번에 AppConfig를 활용하여 DI를 구현했는데 이를 스프링 어노테이션으로 구현하면 아래와 같이 바꿀 수 있다.
@Configuration //AppConfig에 설정을 구성한다는 뜻의 @Configuration 을 붙여준다.
public class AppConfig {
@Bean //각 메서드에 @Bean 을 붙여준다. 이렇게 하면 스프링 컨테이너에 스프링 빈으로 등록한다
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
@Bean
public OrderService orderService() {
return new OrderServiceImpl(
memberRepository(),
discountPolicy());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
@Bean
public DiscountPolicy discountPolicy() {
return new RateDiscountPolicy();
}
}
- 스프링 컨테이너
- ApplicationContext 를 스프링 컨테이너라 한다.
- 기존에는 개발자가 AppConfig 를 사용해서 직접 객체를 생성하고 DI를 했지만, 이제부터는 스프링 컨테이너를 통해서 사용한다.
- 이전에는 개발자가 필요한 객체를 AppConfig 를 사용해서 직접 조회했지만, 이제부터는 스프링 컨테이너 를 통해서 필요한 스프링 빈(객체)를 찾아야 한다. 스프링 빈은 applicationContext.getBean() 메서드 를 사용해서 찾을 수 있다.
public class OrderApp {
public static void main(String[] args) {
// 스프링으로 바꾸기 전 코드
// AppConfig appConfig = new AppConfig();
// MemberService memberService = appConfig.memberService();
// OrderService orderService = appConfig.orderService();
//스프링 컨테이너 생성 - AppConfig를 관리, 구성한다.
ApplicationContext applicationContext = new
AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService =
applicationContext.getBean("memberService", MemberService.class);
//컨테이너로부터 객체를 찾아와서 생성하는 부분
OrderService orderService = applicationContext.getBean("orderService",
OrderService.class);
}
}
728x90
'Spring' 카테고리의 다른 글
스프링 시큐리티(Spring Security) 설정 (0) | 2022.02.17 |
---|---|
Spring 필드 주입 vs 생성자 주입(win) (0) | 2022.02.15 |
(Spring DI) Appconfig를 활용한 가격정책을 DI로 구현 (0) | 2022.02.15 |
(SpringBoot) test code (0) | 2022.02.15 |
스프링 부트 Test 예제(feat. assertj) (0) | 2022.02.14 |