본문 바로가기

Spring

Spring을 통해 의존관계 주입해보기!

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년만에 새로운 가방이 생겨따!

밍지박사는 최고다!!