# Spring 이란
> 모든 내용은 김영한님의 강의를 보고 정리한 내용입니다.
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8
1. 핵심 기술 : 스프링 Di컨테이너, AOP, 이벤트, 기타
2. 스프링 부트
- 스프링을 편리하게 사용할 수 있도록 지원한다.
- 최근에는 기본으로 사용한다.
- 웹서버 내장
- 종속성 버전 관리
- 외부라이브러리 버전 관리
- 관례에 의한 간결한 설정
3. 스프링 단어?
- 문맥에 따라 다르다
- 스프링 DI컨테이너 기술
- 스프링 프레임워크
- 스프링 부트 , 스프링 프레임 워크를 모두 종합한다.
4. 핵심
- 스프링은 자바의 객체지향언어의 장점을 살리기 위한 프레임워크
5. 객체지향
- 객체들의 모임으로 파악하고자 한다.
- 객체는 메시지를 주고받고 데이터를 처리할수 있다. - 협력
- 유연하고 변경이 용이하다.
- 레고 블럭을 조립하듯이
- 키보드, 마우스 갈아 끼우듯이
- 결국 컴포넌트를 수비고 유연하게 변경하면서 개발할 수 있는 방법
- 다형성
- 역할과 구현으로 구분
- 만약 자동차라는 역할은 여러가지의 아반뗴, k5등등의 자동차로 구현
- 구현체의 내부구조를 알 필요가 없다. 변경되어도 영향을 받지 않는다.
- 클라이언트에 영향을 주지 않고 새로운 기능을 추가할 수 있다.
- 새로운 구현체가 나와도 클라이언트는 수정이 필요 없다.
- 클라이언트는 대상의 역할(인터페이스)만 알면 된다.
- 오버라이딩을 통해 구현한다.
- 인터페이스가 변하면 모든 것이 변하기때문에 설계를 잘해야한다.
6. SOLID
- SRP : 단일 책임 원칙
- 하나의 클래스는 하나의 책임만 가져야 한다.
- 중요한 기준은 **변경**
- 변경이 있을 때 파급이 적으면 단일 책임 원칙을 잘 따른 것
- OCP : 개방 - 폐쇄 원칙
- 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
- 다형성을 이용한다 -> 인터페이스를 구현한 새로운 클래스를 만들어서 기능 구현
- 구현이 바뀌어도 역할을 그대로다.
- 클라이언트가 구현 클래스를 직접선택하는 것이 아닌 외부에서 주입받는다.
- 직접 선택하면 클라이언트의 코드가 변경이 되어야 한다.
- 객체를 생성하고, 연관관계를 맺어주는 볃로의 조립, 설정자가 필요하다.
- 스프링 컨테이너
- LSP : 리스코프 치환 원칙
- 인터페이스를 구현한 구현체는 인터페이스의 규약을 다 지켜야 한다.
- 자동차 인터페이스의 엑셀은 앞으로 가라는 기능 -> 뒤로가게 구현하면 LSP 위반
- ISP : 인터페이스 분리 원칙
- 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
- 자동차 인터페이스 -> 운전 인터페이스 , 정비 인터페이스
- 사용자 클라이언트 -> 운전자 , 정비사 분리 가능
- 분리하면 인터페이스의 변화가 다른 인터페이스에 영향을 주지 않는다
- DIP : 의존관계 역전 원칙
- 추상화에 의존해야 한다.
- 구현 클래스에 의존하지말고 인터페이스에 의존하자.
7. 스프링 DI
- 다형성 만으로는 클라이언트 코드의 변경을 막을 수 없다.
- 다형성을 지키면서 OCP, DIP를 지키려면 결국 스프링 컨테이너가 필요하다.
'Spring' 카테고리의 다른 글
Spring Collection @Valid (0) | 2021.06.22 |
---|---|
Spring Bean 생명주기 (0) | 2021.06.22 |
스프링 IoC, DI (0) | 2021.06.22 |
Library VS Framework (0) | 2021.06.22 |
Spring DTO의 생성 및 레이어 이동 (0) | 2021.05.04 |
최근댓글