인터페이스 구현 2일차 (Spring Framework, SOLID)

2023. 1. 4. 11:33코딩배움일지/인터페이스 구현

Framework ?

  • 프레임워크
  • 소프트웨어나 애플리케이션 개발을 간단하게 해주는 뼈대
  • (라이브러리에 다있다. 끌어다 쓰면 되는 형태이다.// node 는 아니다.)

장점

  • 개발에 필요한 최소한의 기능을 제공하기 때문에 모든 기능을 작성할 필요가 없음
  • 애플리케이션 개발에 필요한 시간과 비용을 줄일 수 있음

단점

  • 프레임워크를 사용한 개발은 해당 프레임워크에 대한 이해가 선행적으로 필요함 (매우 큰 단점 배워야 한다 따로)
  • 만들어 놓은걸 외워야 한다. 사실 안외운다. 계속쓰다보는 외워진다.

 

Spring Framework

  • 스프링 프레임워크
  • 자바 개발 환경에서 사용되는 프레임워크

스프링 부트 (Spring Boot)

  • 스프링 애플리케이션을 복잡한 설정 없이 빠르게 작성하는 기능을 제공

스프링 프로젝트 (Spring Project)

  • 스프링 MVC (Spring MVC) : 웹 애플리케이션을간단하게 생성하는 기능을 제공 (엠브이씨 패턴 짜는거)
  • 스프링 데이터 (Spring Data) : 데이터 접근에 관한기능을 제공 
  • 스프링 베치 (Spring Batch) : 배치 처리 기능을 제공 (어떠한 시점에 그 작업이 일어나야한다)
  • 스피링시큐리티 (Spring Security) : 인증 / 인가 기능을 제공

스프링 코어 (Spring Core)

  • 스프링 DI (Spring Dependency Injection) : 의존성 주입 기능을 제공
  • 스프링 AOP (Spring Aspect Oriented Programming) : 관점 지향 프로그래밍 기능을 제공

 

스프링코어 밑에 스프링 프로젝트가 쌓여 있다.

 

 

SOLID

  • 객체지향 5원칙
  • 객체지향 프로그래밍에서 꼭 지켜야할 5개의 원칙

SRP (Single Responsibility Principle) 중요하다!

  • 단일 책임 원칙
  • 객체는 오직 하나의 책임을 가짐
  • 예 : 정렬을 담당하는 클래스가 있을 때 해당 클래스는 정렬과 관련된 기능만 포함해야함

OCP (Open-Closed Priniple)

  • 개방-폐쇠 원칙
  • 객체는 확장에 대해서는 개방적이고 수정에 대해서는 폐쇄적이어야 함 (명세서 부터 작성해라 ㅅㄲㅇ)
  • 객체 기능의 확장을 허용하고 객체의 변경은 지양해야함

LSP (Liskov Substitution Principle)

  • 리스코프 치환 원칙
  • 상속의 본질
  • 자식 클래스는 언제나 부모 클래스를 대체할 수 있다는 원칙
  • 부모 클래스가 들어갈 위치에 자식 클래스가 위치해도 정상 작동해야 하는 원칙 (컴파일러가 해주고 있다.)

ISP (Interface Segregation Principle)

  • 인터페이스 분리 원칙
  • 클라이언트에서 사용하지 않는 메서드는 사용을 금함
  • 인터페이스를 작게 나누어 작성하라는 원칙 (전화는 전화 메시지는 메시지만 하게)

DIP (Dependency Inversion Principle)

  • 의존성 역전 원칙
  • 추상성이 높고 안정적인 고수준의 클래스는 구체적이고 불안정한 저수준의 클래스에 의존해서는 안된다는 원칙 (인터페이스가 클래스에 의존하면 안된다)
  • 인터페이스를 통해 이 원칙을 준수할 수 있음
  • 클라이언트는 저수준의 클래스에서 추상화한 인터페이스만 바라보기 때문에 해당 인터페이스를 구현한 클래스는 클라이언트에 어떤 변경도 없이 교체가 가능함