당근개발자
당근당근
당근개발자
전체 방문자
오늘
어제
  • 분류 전체보기 (157)
    • codepresoo (13)
    • JAVA (1)
    • JS (12)
    • 코딩 테스트 (7)
    • Spring (21)
    • 자료구조 (4)
    • HTTP (7)
    • JSP (36)
    • Etc (21)
    • RESTful (11)
    • React (1)
    • k8s (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • #코드프레소. #codepresso #대외활동 # IT교육 #코딩강의 #코딩 이러닝 # 무료 IT교육 #무료 코딩교육
  • stack#자료구조
  • 패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기
  • thymleaf#layout#fragment#thymleaf layout 적용안됌
  • S
  • thymleaf error#template might not exist
  • @JsonFilter#당근개발자
  • 한 번에 끝내는 코딩테스트 369 Java편 초격차 패키지 Online.
  • queue#자료구조
  • 이
  • Primitive#Wrapper
  • 한 번에 끝내는 코딩테스트 369 Java편 초격차 패키지 Online
  • HATEAOD
  • dobule_linked_list#java
  • 코드프레소. #codepresso #대외활동 # IT교육 #코딩강의 #코딩 이러닝 # 무료 IT교육 #무료 코딩교육
  • 패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수강하고있는강의명

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
당근개발자

당근당근

Spring  DIP,OCP 원칙 준수하는 법(AppConfig)
Spring

Spring DIP,OCP 원칙 준수하는 법(AppConfig)

2021. 11. 5. 01:23

저번 포스팅에 solid에 대해서 언급하였다.

 

그중 OCP,DIP 가있는데,

다시  간단히 정리하자면

OCP는 확장은 가능하지만, 변경을 하지말라 였고

DIP는 구현 클래스에 의존하지말고 인터페이스에 의존하라는 애기이다.

 

public class OrderServiceImpl implements OrderService {

       // private final DiscountPolicy discountPolicy = new FixDiscountPolicy();

         private final DiscountPolicy discountPolicy = new RateDiscountPolicy();

}

OrderService 인터페이스에  두 구현체가있다. FixDiscountPolicy, RateDiscountPolicy();

 

여기서 OrderServiceImpl의 discountPolicy를 저렇게 주석처리로 바꾼다면,

DIP,OCP의 원치에 어긋난다.

구현체에 의존하였고, 직접 코드를 변경하였기 때문이다.

이를 해결하기위해, AppConfig를 사용해보자

 

해당 폴더에 AppConfig.class를 생성한후

다음과 같이 작성을한다. 이것을 생성자 주입이라고한다.

여기서 어떤 구현체가 들어갈지 정하는것이다.

 여기서 OrderServiceImpl 클래스에 들어가보면

짠, 해당 레파지토리는 단순 선언만 되었있고, 생성자를 통해 객체를 받는다. 해당 구현체에서는 별다른 선택을 하지않고,

본인의 일만 수행한다. 역할과 행동을 분리 한 사례라고 볼 수 있다.

'Spring' 카테고리의 다른 글

spring bean, AppConfig, @Configuration @Bean ..  (0) 2021.11.05
IoC,DI 그리고 컨테이너  (0) 2021.11.05
SOLID(객체지향 설계 5가지원칙)  (0) 2021.11.03
Spring 이란  (0) 2021.11.03
web.xml  (0) 2021.04.28
    'Spring' 카테고리의 다른 글
    • spring bean, AppConfig, @Configuration @Bean ..
    • IoC,DI 그리고 컨테이너
    • SOLID(객체지향 설계 5가지원칙)
    • Spring 이란
    당근개발자
    당근개발자

    티스토리툴바