반응형
안녕하세요
오늘은 지금까지 만든 소스를 스프링으로 전환을 해보겠습니다.
가장 먼저 Appconfig에 @Configuration 어노테이션을 달아주고 @Bean 어노테이션을 통해 스프링 컨테이너에 값을 저장시킵니다.
1
2
3
4
5
6
7
8
|
@Configuration
public class AppConfig {
@Bean
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
}
|
cs |
위와 같이 모든 메서드에 @Bean을 해줍니다.
그다음 잘 동작하는지 확인하기 위해 먼저 MemberApp 자바 파일을 먼저 스프링으로 전환해 줍니다.
1
2
3
4
5
6
7
8
9
|
// AppConfig appConfig = new AppConfig();
// MemberService memberService = appConfig.memberService();
// MemberService memberService = new MemberServiceImpl();
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService = applicationContext.getBean("memberService",MemberService.class);
Member member = new Member(1L,"memberA",Grade.VIP);
memberService.join(member);
|
cs |
위와 같이 직접 AppConfig에서 뽑아 저장하던걸 AnnotationConfigApplicationContext를 통해 Bean에서 가져오도록 변경하였습니다.
OrderApp 역시 동일하게 변경해 줍니다.
1
2
3
4
5
6
7
8
9
10
|
// AppConfig appConfig = new AppConfig(); //Appconfig 사용 연결
// MemberService memberService = appConfig.memberService();
// OrderService orderService = appConfig.oderService();
// MemberService memberService = new MemberServiceImpl(); // 직접 연결
// OrderService orderService = new OrderServiceImpl();
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService = applicationContext.getBean("memberService",MemberService.class);
OrderService orderService = applicationContext.getBean("oderService",OrderService.class);
|
cs |
ApplicationContext를 스프링 컨테이너라고 합니다.
스프링 컨테이너는 @Configuration이 붙은 Appconfig를 설정 정보로 사용합니다. 요기서 @Bean이 붙은 메서드를 모두 호출 반한된 객체들을 스프링 컨테이너에 등록합니다.
스프링 빈은 @Bean이 붙은 메서드의 이름을 스프링 빈의 이름으로 사용합니다. 따로 이름을 직접 지정하고 싶다면@Bean(name = "요기적기")을 통해 이름을 지정해 줄 수 있습니다.
스프링 빈에 저장된 객체는 applicationContext.getBean을 통해 가져올 수 있습니다.
기존에는 개발자가 직접 모든 것을 했지만 스프링이 생기고 스프링 컨테이너에서 찾아서 사용하도록 변경되었습니다.
반응형
'TIL > 스프링 핵심원리 - 기본편 with 인프런(김영한님)' 카테고리의 다른 글
스프링 핵심원리 기본편7 - 스프링 빈 조회(기본) (0) | 2024.07.08 |
---|---|
스프링 핵심원리 기본편6 - 스프링 컨테이너 생성 & 컨테이너에 등록된 모든 빈 조회 (0) | 2024.07.02 |
스프링 핵심원리 기본편4 - IoC, DI 그리고 컨테이너 (0) | 2024.06.27 |
스프링 핵심원리 기본편3 - AppConfig 리팩터링 (0) | 2024.06.21 |
스프링 핵심원리 기본편2 - 생성자 주입 (0) | 2024.06.20 |