728x90
반응형
AppConfig를 왜 사용해야 될까?
문제점 찾기
다음과 같은 예제 코드가 있다고 하자
//예제코드
public class OrderServiceImpl implements OrderService {
private final DiscountPolicy discountPolicy = new FixDiscountPolicy();
}
위코드는 문제가 있다!
어디가 문제가 있을까
바로 OrderServiceImpl이 DiscountPolicy 객체를 의존하다는 것이다.
객체를 의존하고 있다?
OrderServiceImpl 클래스안에서 FixDiscountPolicy 객체를 생성하고 있다
자세히 보면 다형성을 사용하여 DiscountPolicy 인터페이스에 FixDiscountPolicy를 생성하여 넣어준다.
만일 discountPolicy(인터페이스) 가 다른 정책으로 바뀐다고하자
그럼 해당 코드를 변경해 줘야한다.
public class OrderServiceImpl implements OrderService {
// 변경 필요
//private final DiscountPolicy discountPolicy = new FixDiscountPolicy();
private final DiscountPolicy discountPolicy = new RateDiscountPolicy();
}
문제점 해결
AppConfig가 등장하였다.
해결 방법
1. 객체만 선언한다.
2. 생성 자를 통해 주입을 받는다.
public class OrderServiceImpl implements OrderService {
private final DiscountPolicy discountPolicy;
public OrderServiceImpl(DiscountPolicy discountPolicy) {
this.discountPolicy = discountPolicy;
}
}
주입은 어디서 받을까?
AppConfig 클래스를 만들어 넣어주면 끝이다.
public class AppConfig {
public DiscountPolicy discountPolicy() {
//return new FixDiscountPolicy();
return new RateDiscountPolicy();
}
}
그림 설명
appconfig는 RateDiscountPolicy를 생성하고
생성된 주소 값을 참조 하여 OrderServiceImpl 에 주입을 해준다.
아래처럼 변경사항이 있을때 간단하게 AppConfig만 변경하면된다.
참고: www.inflearn.com
728x90
반응형
'Spring > spring 기초 스터디' 카테고리의 다른 글
[Spring] Spring container 와 Spring bean (0) | 2021.04.25 |
---|---|
[Spring] AppConfig에 Spring 적용해보기 (0) | 2021.04.24 |
[Spring] DI 란? (0) | 2021.04.17 |
[Spring] 스프링 프로젝트 시작하기 (0) | 2021.04.14 |
[Spring] 객체지향 설계의 5가지 원칙(SOLID) (0) | 2021.04.14 |
댓글