Development/Spring Boot
[Spring Boot] 새로운 구조 및 구현체 적용
sky Jeong
2022. 8. 4. 00:14
1- 강의 노트
- AppConfig의 등장으로 애플리케이션의 사용 영역과 객체를 생성하고 구성(configuration)하는 영역이 분리됨
- 만약 적용되는 할인 정책이 변경된다면, 클라이언트 코드 영역은 변경할 필요 없이 AppConfig만 수정하면됨
- 구성 영역은 당연히 변경됨. 세부적인 내용이 바뀔 수 있기 때문임.
2- 변경 예시
package hello.core;
import hello.core.discount.DiscountPolicy;
import hello.core.discount.FixDiscountPolicy;
import hello.core.discount.RateDiscountPolicy;
import hello.core.member.MemberService;
import hello.core.member.MemberServiceImpl;
import hello.core.member.MemoryMemberRepository;
import hello.core.order.OrderService;
import hello.core.order.OrderServiceImpl;
/**
* Application 전체를 구성하고 설정하는 역할
* - 로미오 줄리엣 공연 예시 중 기획자
* - 어플리케이션에 대한 환경 구성을 모두 이곳에서 함
*/
public class AppConfig {
// 생성자 주입: 생성자를 통해서 객체가 주입되는 것
// 중복된 코드 잡아주는 단축키 (맥 기준) : 옵션 + 커맨드 + M
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
private MemoryMemberRepository memberRepository() {
return new MemoryMemberRepository();
}
public OrderService orderService() {
return new OrderServiceImpl(memberRepository(),discountPolicy());
}
public DiscountPolicy discountPolicy() {
// return new FixDiscountPolicy();
return new RateDiscountPolicy();
}
}
- 정액법에서 정율법으로 바꾼거 예시
3- 토탈 코드
- 현재까지 전체 코드를 보면 OCP와 DIP를 모두 준수해 클라이언트 코드에서 변경은 불필요해짐
https://github.com/Jeong-sky-1003/core.git