스프링 기본원리(1)

1 minute read

스프링의 핵심

  1. 스프링은 자바 언어 기반의 프레임워크
  2. 객체 지향 언어
  3. 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크
  4. 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크

스프링 프레임워크의 기술들

  1. 핵심기술 : 스프링 Di 컨테이너, AOP, 이벤트, 기타
  2. 웹 기술 : 스프링 MVC, 스프링 WebFlux
  3. 데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원
  4. 기술 통합 : 캐시, 이메일, 원격접근, 스케줄링
  5. 태스트 : 스프링 기반 테스트 지원
  6. 언어 : 코틀린, 그루비

스프링 부트란?

  1. 스프링을 편리하게 사용할 수 있도록 지원, 최긘에는 기본으로 사용
  2. 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
  3. Tomcat같은 웹서버를 내장해서 별도의 웹 서버 설치 불필요
  4. 손쉬운 빌드 구성을 위한 starter 종속성 제공
  5. 스프링과 3rd parth 라이브러리 자동구성
  6. 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공
  7. 관례에 의한 간결한 설정

스프링과 객체지향의 관계

  1. 다형성(여러가지 방법으로 문제를 해결하는 방법)이 가장 중요
  2. 스프링은 다형성을 극대화
  3. 스프링에서 이야기하는 제어의 역전(Ioc), 의존관계 주입(DI)은 다형성을 활용해서 역할과 구현을 편리하게 함

좋은 객체 지향 설계의 5가지 원칙

  • SRP : 단일 책임 원칙

    • 한 클래스는 하나의 책임만 가져야 한다.
    • 하나의 책임이라는 것은 모호하다.(크거나 작거나, 문맥과 상황에 따라 다름)
    • 중요한 기준은 변경, 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것.
  • OCP : 개방-폐쇄 원칙

    • 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
    • 코드를 변경하지 않고 어떻게 해결할까? 객체를 생성하고, 연관관계를 맺어주는 별도의 조립, 설정자가 필요하다.(스프링의 역할)
  • LSP : 리스코프 치환 원칙

    • 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
    • ex) 자동차 인터페이스의 엑셀은 앞으로 가는 기능이므로, 뒤로 가게 구현하면 LSP 위반
  • ISP : 인터페이스 분리 원칙

    • 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
    • 인터페이스를 분리하면 분리된 인터페이스를 변경해도 다른 인터페이스에게 영향을 미치지 않는다.
  • DIP : 의존관계 역전 원칙

    • 프로그래머는 추상화에 의존해야지, 구체화에 의존하면 안된다.
    • MemberRepository m = new MeoryMemberRepository() 처럼 구현체를 직접 선택한다. DIP 위반

-> 위와 같은 원칙들을 지키는걸 스프링은 가능하다.

Leave a comment