https://jootang2.tistory.com/127
Spring에서 순수 Java코드로 의존관계 주입해보기 (OCP,DIP 문제를 어떻게 해결하지?)
원리를 모르고 기능만 사용해서 결과물 내기에만 급급했었다. 이제는 결과물을 내는 것도 중요하지만, 어떻게 작동하는지에 대해서 이해가 필요하다고 생각든다. Spring의 기능을 사용하지 않고
jootang2.tistory.com
이전 포스팅에서는 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을 찾아서 사용
이후에는 스프링 빈을 조회, 동일한 타입이 둘 이상인 경우, 상속 관계에 대해서 알아보자!
스프링 핵심 원리 - 기본편 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런
www.inflearn.com
거의 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 |