1. Spring으로의 전환
@Configuration
public class AppConfig {
@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();
}
}
- @Configuration : AppConfig에 설정을 구성한다는 뜻
- @Bean : 각 메서드를 스프링 컨테이너에 스프링 빈으로 등록해줌.
public class MemberApp {
public static void main(String[] args) {
// AppConfig appConfig = new AppConfig();
// MemberService memberService = appConfig.memberService();
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService = applicationContext.getBean("memberService", MemberService.class);
Member member = new Member(1L, "memberA", Grade.VIP);
memberService.join(member);
Member findMember = memberService.findMember(1L);
System.out.println("new member = " + member.getName());
System.out.println("find Member = " + findMember.getName());
}
}
- MemberApp도 Spring으로 소스를 변경해줌.
- 기존 순수한 자바코드에서는 new AppConfig를 해주고, 설정파일의 memberService를 가져와서 사용함.
- 스프링 컨테이너인 ApplicationContext 를 선언하고 이 스프링 컨테이너를 통해서 직접 객체를 생성하고 DI해주면 됨.
- 스프링 컨테이너는 @Configuration이 붙은 AppConfig를 설정 정보로 사용하며, @Bean이라 적힌 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다. 이렇게 등록된 객체를 스프링 빈이라 함.
- @Bean이 붙은 메서드 명이 MemberService인 경우 스프링 빈의 이름은 memberSerivice가 된다.
- 순수한 자바코드에서는 개발자가 객체를 AppConfig를 사용해서 직접 조회했으나 spring으로 전환하게되면 스프링 컨테이너를 통해서 필요한 스프링 빈(객체)를 찾아야 함. applicationContext.getBean() 메서드를 사용해서 찾을 수 있다.
'개발자 공부 > Spring' 카테고리의 다른 글
| 스프링 컨테이너의 생성 과정 (0) | 2023.07.10 |
|---|---|
| AppConfig 역할과 실행 (0) | 2023.07.10 |
| MVC (6) - Tiles ViewResolver 설정하기 / Root페이지들을 위한 Layout 페이지 만들기 (0) | 2023.04.13 |
| MVC (5) - 페이지 공통분모 집중화 / 페이지 모듈 분리하기 / 레이아웃만들기 / tiles 라이브러리 추가 (0) | 2023.04.13 |
| MVC (4) - ViewResolver 사용하기 / 정적파일 서비스하기 (0) | 2023.04.12 |