스프링이란?

색인

    1. 깃털이란?

    • 봄은 Java 언어 기반 프레임워크
    • 자바는 객체 지향 언어의 강력한 기능을 활용하는 프레임워크입니다.
    • 좋은 객체 지향 애플리케이션 개발을 지원하는 프레임워크
    • Spring은 다음과 같은 기술로 다형성 + OCP, DIP를 지원합니다. (OCP, DIP는 아래에서 설명)
      • DI(Dependency Injection): 종속 관계, 종속성 관리자
      • DI 탱크 제공

    2. 좋은 객체지향 설계의 5가지 원칙(SOLID)

    • SRP: 단일 책임 원칙
    • OCP: 개방/폐쇄 원리
    • LSP: Liskov 대체 원리
    • ISP: 인터페이스 분리 원리
    • DIP: 종속성 역전 원칙

    (1) SRP: 개인 책임 원칙

    • 클래스는 하나의 책임만 가져야 합니다.
    • 중요한 기준은 변화이며, 변화가 일어났을 때 파급 효과가 작다면 개인 책임의 원칙을 잘 따르는 것입니다.

    (2) OCP: 개방/폐쇄 원칙

    • 소프트웨어 요소는 확장에는 열려 있어야 하지만 수정에는 닫혀 있어야 합니다.
    • 다형성 사용
      • 인터페이스를 구현하는 새 클래스를 만들어 새 기능을 구현합니다.
      • 역할 분리 및 구현

    !!️ 문제 발생


    • MemberService 고객이 직접 구현 클래스를 선택할 수 있습니다.
      • MemberRepository m = new MemoryMemberRepository(); //기존 코드
      • • MemberRepository m = new JdbcMemberRepository(); //코드 변경
    • 구현 개체를 변경하려면 고객 코드를 변경해야 합니다 → 개체를 만들고 연결하려면 별도의 어셈블리와 세터가 필요합니다.

    (삼) LSP: Liskov 대체 원리

    • 프로그램의 개체는 프로그램의 정확성을 손상시키지 않고 하위 유형의 인스턴스로 대체될 수 있어야 합니다.
    • 즉, 부모 개체와 이를 상속하는 자식 개체가 있는 경우 부모 개체가 호출될 때 자식 개체가 부모 개체를 완전히 대체할 수 있어야 합니다.

    (4) ISP: 인터페이스 분리 원리

    • 이는 클라이언트가 사용하지 않는 인터페이스에 의존하도록 강요해서는 안 된다는 것을 의미합니다.
    • 클라이언트별로 차별화된 인터페이스를 만들고 클라이언트가 사용하지 않는 메서드를 구현하지 않도록 합니다.

    (5) DIP: 종속성 역전 원칙

    • 구체화가 아닌 추상화에 의존해야 합니다.
    • 이는 클래스 구현이 아니라 인터페이스에 의존할 필요가 있음을 의미합니다.
    • 클라이언트는 구현을 유연하게 변경하기 위해 인터페이스에 의존해야 합니다.