[SpringBoot] 객체 지향 설계와 스프링 (0807)

왕감자·2024년 8월 8일

KB IT's Your Life

목록 보기
119/177

스프링(Spring)

자바 언어 기반 프레임워크 - 객체 지향 언어
➡ 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크

🤔 좋은 객체 지향?
➞ 객체 지향 특징 : 추상화, 캡슐화, 상속, 다형성

✔ 좋은 객체 지향 설계 5원칙 (SOLID)

  • 1. SRP (Single Responsibility Principle - 단일 책임 원칙)
    • 한 클래스는 하나의 책임만 가져야 함
  • 2. ⭐ OCP (Open/Close Principle - 개방/폐쇄 원칙)
    • 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀있어야 함
    • 다형성 활용
    • 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능 구현
  • 3. LSP (Liskov Substitution Principle - 리스코프 치환 원칙)
    • 하위 클래스는 인터페이스 규약을 다 지켜야 함
      • ex) 자동차 인터페이스의 엑셀은 앞으로 가라는 기능, 뒤로가게 구현하면 LSP 위반
  • 4. ISP (Interface Segregation Principle - 인터페이스 분리 원칙)
    • 인터페이스를 기능에 맞게 적당한 크기로 잘 쪼개는게 중요
    • 인터페이스가 명확해지고 대체 가능성이 높아짐
      ex) 자동차 인터페이스 ➔ 운전 / 정비 인터페이스로 분리
      ⇨ 사용자 클라이언트 ➔ 운전자 / 정비사 클라이언트로 분리 됨
  • 5. ⭐ DIP (Dependency Inversion Principle - 의존관계 역전 원칙)
    • 추상화에 의존, 구체화에 의존X
    • 구현 클래스에 의존X, 인터페이스에 의존
      ex) MemberRepository memberRepository = new MemoryMemberRespository(); ➞ 위반

➡ 다형성 만으로는 OCP, DIP 지킬 수 없음
➞ 스프링이 가능하게 지원 (클라이언트 코드 변경 없이 기능 확장)


스프링 부트

스프링 프레임워크를 편리하게 사용할 수 있도록 지원

  • 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
    • 빌드하고 서버 띄우는 것 까지 한번에 (Tomcat같은 웹 서버를 내장해서 별도로 설치X)
  • starter 종속성 제공
    • 손쉬운 빌드 구성
  • 스프링과 3rd parth(외부) 라이브러리 자동 구성

0개의 댓글