본문 바로가기

Spring40

[Spring] IoC, DI, 컨테이너 제어의 역전 IoC (Inversion of Control)- 제어의 역전 IoC (Inversion of Control)- AppConfig 등장 이후 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. 필요한 인터페이스들을 호출하지만 어떤 구현 객체들이 실행될지 모른다.- 제어 흐름에 대한 권한은 AppConfig가 가지고 있다. 이렇게 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)이라 한다. 프레임워크 vs 라이브러리- 프레임워크: 내가 작성한 코드를 제어하고, 대신 실행한다. (JUnit)- 라이브러리: 내가 작성한 코드가 직접 제어의 흐름을 담당한다 의존관계 주입 DI (Dependency Injection)OrderServiceImpl은 Disco.. 2025. 11. 7.
[Spring] 객체 지향 설계의 원칙 정액 할인 정책을 정률 할인 정책으로 변경 할인 전책 변경 구성 코드public class AppConfig { public DiscountPolicy discountPolicy() { //return new FixDiscountPolicy(); return new RateDiscountPolicy(); }} AppConfig에서 할인 정책을 FixDiscountPolicy 에서 RateDiscountPolicy 객체로 변경했다.AppConfig의 사용으로 클라이언트 코드인 주문 서비스는 구현에 의존하지 않고 있기때문에클라이언트 코드는 변경하지 않아도 된다. 좋은 객체 지향 설계의 5가지 원칙 SRP, DIP, OCP 적용 SRP 단일 책임 원칙- 한 클래스.. 2025. 11. 5.
[Spring] AppConfig 리팩토링 인터페이스에만 의존하도록 설계하기 위해 구현 객체를 생성하고 연결하는 책일을 가지는별도의 설정 클래스인 AppCofig를 만든다. AppConfigpackage hello.core;import hello.core.Order.OrderService;import hello.core.Order.OrderServiceImpl;import hello.core.discount.FixDiscountPolicy;import hello.core.member.MemberService;import hello.core.member.MemberServiceImpl;import hello.core.member.MemoryMemberRepository;public class AppConfig { public Me.. 2025. 11. 2.
[Spring] 새로운 할인 정책 새로운 할인 정책 개발 정액 할인에서 정률 할인으로 변경되어 RateDiscountPolicy를 추가한다. RateDiscountPolicypackage hello.core.discount;import hello.core.member.Grade;import hello.core.member.Member;public class RateDiscountPolicy implements DiscountPolicy{ private int rate = 10; @Override public int discount(Member member, int price) { if (member.getGrade() == Grade.VIP){ return price * rate / .. 2025. 10. 29.