반응형
스프링 핵심 원리는
인프런 스프링 핵심 원리 기본편 (김영한)의 요약 내용입니다.
스프링과 객체지향 프로그래밍
역사 : EJB -> 스프링/JPA
- 스프링 / 스프링 부트
- 데이터 / 세션 / 시큐리티 / RestDocs / 배치 / 클라우드 / ...
스프링
- 핵심기술 : DI, AOP, 이벤트, 기타
- 웹기술 : MVC, WebFlux
- 데이터 : 트랜잭션 ,JDBC, ORM, XML
- 기술 통합 : 캐시, 이메일, 원격접근, 스케줄
- 테스트 : 스프링 기반 테스트 지원
- 언어 : 코틀린, 그루비
스프링 부트
- 단독으로 실행할 수 있는 어플리케이션 생성
- WAS 내장
- 쉬운 빌드 구성을 위한 starter 종속성 제공 (하나로 여러 종속성 관리)
- 3th party 자동 구성 (버전관리)
- 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공 (Actuator)
- 간결한 설정
스프링의 진짜 핵심은 좋은 객체 지향 애플리케이션을 개발할 수 있도록 도와주는 프레임웤
객체지향 : 추상화, 캡슐화, 상속, 다형성
다형성
- 역할과 구현
- 단순 / 유연 해진다.
- 클라이언트는 역할(인터페이스)만 알면된다. (overriding으로 호출)
- 내부구조를 몰라도 되며, 변경에 영향을 받지 않는다.
- 운전자 역할 -> 자동차 역할 - 자동차 구현 (K3 / 아반떼 / 모닝)
- 운전자는 구현체를 몰라도 되며, 교체가 가능하다
- 대신에 인터페이스가 변경된다면, 많은 변경이 필요하다.
SOLID
- SRP: 단일 책임 원칙(single responsibility principle)
- 한 클래스는 하나의 책임만 가져야 한다.
- OCP: 개방-폐쇄 원칙 (Open/closed principle)
- 확장에 열려있고, 변경에 닫혀 있어야 한다.
- 인터페이스를 활용 + 객체를 생성하고 연관관계를 맺어주는 별도의 조립, 설정자
- LSP: 리스코프 치환 원칙 (Liskov substitution principle)
- 정확성을 깨지지 않으면서 하위 타입의 인스턴스로 변경할 수 있어야한다.
- ISP: 인터페이스 분리 원칙 (Interface segregation principle)
- 범용 인터페이스 보다 역할이 분리된 인터페이스 여러개로 분할해야 한다.
- DIP: 의존관계 역전 원칙 (Dependency inversion principle)
- 추상화(역할)에 의존해야 하며, 구체화(구현)에 의존하면 안된다.
- 다형성 만으로는 OCP, DIP를 지킬 수 없다.
스프링은 DI / DI 컨테이너로 OCP, DIP를 가능하게 한다. (클라이언트의 코드 변경 없이 기능 확장)
728x90
반응형
'스프링' 카테고리의 다른 글
스프링 핵심 원리 - (3) (0) | 2022.08.03 |
---|---|
스프링 핵심 원리 - (2) (0) | 2021.09.10 |
필터 / 인터셉터 / AOP (0) | 2021.06.28 |
Spring (0) | 2021.06.28 |
Logback (0) | 2021.05.25 |
댓글