Web/Java (Spring+JSP)
Spring 핵심 원리 #5- IOC,DI, 그리고 컨테이너
#제어의 역전 IoC(Inversion of Control) - 기존의 프로그램에서는 클라이언트 구현객체가 스스로 필요한 서버 구현 객체를 생성,연결,실행하였다. : 즉, 구현 객체가 프로그램의 제어 흐름을 스스로 조종하며, 이는 개발자로써 자연스러운 흐름이다. EX) 클라이언트 구현객체(OrderServiceImpl)에서 서버 구현 객체(MemoryMemberRepository, FixDiscountPolicy)들을 직접 생성하여 실행하였다. 이는 여러가지 객체 지향 설계 원칙을 위반하였다. - 반면에, AppConfig가 등장한 이후에 클라이언트 구현 객체는 자신의 로직을 실행하는 역할만 담당한다 : App의 전체적인 흐름 제어를 AppConfig에서 담당한다. EX) OrderServiceImpl ..
Spring 핵심 원리 #4- AppConfig 리팩토링/총정리
# 기존의 AppConfig 코드 - 기존 코드를 살펴보면 MemoryMemberRepository 객체의 중복 생성이 존재하며, 각 클래스의 역할이 잘 안보인다. : 생성자가 인터페이스에 의존하므로 각 구현체 정보만 확인할 수 있기 때문이다. #AppConfig 리팩토링 =>AppConfig의 중복이 제거되었고, 구현체들의 역할이 훨씬 잘 보인다. # AppConfig의 역할 총정리 : AppConfig가 등장함으로써 애플리케이션이 크게 사용 영역과 객체를 생성하고 구현체를 할당하여 구성하는 구성(Configuration) 영역으로 나뉘었다. -> 만약 할인 정책을 RateDiscountPolicy로 변경해도 사용영역은 전혀 영향을 받지 않고 구성 영역만 바뀌게 된다. : 구성 영역은 당연히 변경되는 ..
Spring 핵심 원리 #3- 새로운 할인 정책/AppConfig 적용
#새로운 할인 정책의 개발 : 기획자가 이전의 고정 할인 정책에서 정률 할인 정책으로 바꾸고 싶다고 한다. -> 우리는 이전에 유연한 설계가 가능하도록 객체지향 설계 원칙을 준수하여 개발을 진행하였다. : 인터페이스를 만들어 구현체 클래스에 각각의 역할을 따로 맡기고, 이후에 원하는대로 객체를 조합하여 사용할 수 있다. Q) 실제로 이전의 설계가 객체지향 설계 원칙을 잘 준수했는가? 확인해보자 - 주문한 금액의 %를 할인해주는 새로운 정률 할인 정책을 추가하자. -> DiscountPolicy를 상속받는 RateDiscountPolicy를 만들어 원하는 대로의 할인 정책을 실행할 수 있다. #새로운 할인 정책 적용과 문제점 -> 그렇지만 이전의 코드는 객체지향원칙을 완벽히 준수하고 있지는 않다. - 문제..