https://jootang2.tistory.com/127
이전 포스팅에서는 Spring의 기능을 사용하지 않고 순수 java코드로 의존관계를 주입해봤다.
이제 Spring을 통해서 주입해보겠다!
어노테이션을 통해서 AppConfig를 bean으로 등록하자.
@Configuration : 설정 정보
@Bean : spring container에 등록이 된다.
@Configuration
public class AppConfig {
@Bean
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
@Bean
private MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
@Bean
public OrderService orderService() {
return new OrderServiceImpl(memberRepository(), discountPolicy());
}
@Bean
public DiscountPolicy discountPolicy() {
return new RateDiscountPolicy();
}
}
ApplicationContext : spring container -> @Bean을 관리해준다.
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class)
-> AppConfig.class에 등록된 Bean들을 관리해준다.
MemberService memberSerivce = applicationContext.getBean("memberService", MemberService.class)
"memberService"는 @Bean으로 등록한 메소드명
MemberService.class는 반환 타입
public class MemberApp {
public static void main(String[] args) {
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);
}
}
기존 : AppConfig를 사용해서 직접 객체 생성, DI(주입)을 해줌
Spring : ApplicationContext(Spring Container)를 통해서 해줌
@Bean이 붙은 메서드를 모두 호출해서 반환된 객체를 spring container에 모두 등록해줌 (기본적으로 메소드 명으로 등록)
기존 : 필요한 객체를 AppConfig를 직접 조회해서 찾아왔음
Spring : spring container를 통해서 필요한 스프링 bean(객체)를 찾아옴
결론
기존 : 개발자가 자바코드로 모든것을 했음
Spring : spring container에 객체를 spring bean으로 등록, 필요 시 container에서 bean을 찾아서 사용
이후에는 스프링 빈을 조회, 동일한 타입이 둘 이상인 경우, 상속 관계에 대해서 알아보자!
거의 7~8년만에 새로운 가방이 생겨따!
밍지박사는 최고다!!
'Spring' 카테고리의 다른 글
Spring bean 조회 시 같은 타입이 두 개 이상인 경우는 어떻게 해요~? (2) | 2023.03.06 |
---|---|
Spring에 등록된 Bean들을 조회해보자~ (2) | 2023.02.21 |
Spring에서 순수 Java코드로 의존관계 주입해보기 (OCP,DIP 문제를 어떻게 해결하지?) (0) | 2023.01.10 |
AOP는 또 뭐에요? 처음 들어봐요 (0) | 2023.01.05 |
H2 DB File corrupted while reading record: null. Possible solution: use the recovery tool [90030-200] 90030/90030 오류 : 해결방법 (0) | 2023.01.01 |