[Spring] Spring이란?
Spring이란?
스프링이라고 하는 것은 프레임워크 하나를 지칭하는 것일 수도 있지만, 스프링 하위 프레임워크를 포함한 집합체를 의미하기도 한다.
대표적으로,
- 스프링 프레임워크
- 스프링 부트(스프링 프레임워크의 모든 기술들을 편리하게 사용할 수 있도록 도와준다.)
- 스프링 데이터 (CRUD를 편리하게 사용할 수 있도록 도와준다.)
- 스프링 시큐리티 (보안 관련 기능을 편리하게 사용할 수 있도록 도와준다.)
- 스프링 세션(세션 기능을 편리하게 사용할 수 있도록 도와준다.)
- 스프링 Rest Docs (API 문서를 편리하게 사용할 수 있도록 도와준다.)
- 스프링 배치 (배치 처리에 특화되어 있다.)
그중 핵심은 스프링 프레임 워크이며, 그 외의 기술들은 스프링 프레임워크를 편리하게 사용하도록 도와주는 기술들이라고 할 수 있다.
Spring Boot
스프링 프레임워크 기반 프로젝트를 복잡한 설정 없이 쉽고 빠르게 만들어주는 프레임워크
- Spring Iniitializr와 같은 툴로 스프링 애플리케이션을 손쉽게 생성할 수 있다.
- WAS를 내장하고 있어 별도의 웹 서버를 설치하지 않아도 된다.
- 스프링과 써드파티 라이브러리를 자동으로 구성해준다.
Spring의 핵심 개념
스프링은 자바 언어 기반의 프레임워크이며,
자바는 객체 지향 언어로써, 스프링은 객체 지향 언어가 가진 특징을 살려내는데 효과적인 프레임워크이다.
-> 즉 객체 지향 애플리케이션을 개발할 수 있도록 도와주는 프레임워크라고 할 수 있다.
SOLID - 좋은 객체 지향 설계의 5원칙
- Single Responsibility Principle, 단일 책임 원칙 - 한 클래스는 하나의 책임만을 가져야 한다.
- 하나의 책임의 기준은 변경이다.
- 변경의 파급 효과가 적으면 적을수록 단일 책임 원칙을 잘 지킨 것.
- Open/Closed Principle, 개방 폐쇄 원칙 - 기존의 코드를 변경시키지 않고(Closed) 확장시킬 수 있다.
- 인터페이스를 생성하고, 이에 대한 구현 클래스로 코드를 확장시킬 수 있다.
- 그러나 이럼에도 코드의 변경이 불가피하기 때문에, 스프링 컨테이너에서 객체의 생성 및 연관관계를 주입해 주는 설정자의 역할을 한다.
- Liskov substitution principle, 리스코프 치환 원칙 - 클래스를 상속하는 자식 클래스들은 부모 클래스의 규약을 지켜야 한다.
- 다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야한다.
- 규약이 지켜져야, 인터페이스의 구현체를 믿고 사용할 수 있다.
- Interface Segregation Principle, 인터페이스 분리 원칙 - 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
- 사람이라는 인터페이스 하나에 모든 메서드를 생성하는 것보다, 개발자, 농부 등과 같이 인터페이스를 명확하게 만드는 것이 대체 가능성을 높인다.
- Dependency Inversion Principle, 의존 관계 역전 원칙 - 구체화가 아닌 추상화의 의존해야 한다.
- 구현 클래스는 인터페이스에 의존해야 하며, 다른 구현 클래스에 의존해서는 안된다.
위 5가지 원칙에서 가장 중요한 특징은 다형성이다.
다형성이 지켜져야 좋은 객체 지향 설계를 할 수 있지만, 다형성만으로는 위 원칙을 지킬 수 없다.
이를 해결하기 위해 스프링에서는 다형성과, OCP, DIP를 지킬 수 있도록 지원해 준다.
- 의존성 주입
- DI 컨테이너
출처
스프링 핵심 원리 - 기본편 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com
https://ttl-blog.tistory.com/86
[Spring] 스프링이란?
우선 스프링의 탄생 배경을 알아보겠습니다. EJB(Enterprise Java Bean) EJB를 검색해보면 다음과 같이 설명합니다. 엔터프라이즈 자바빈즈(Enterprise JavaBeans; EJB)는 기업환경의 시스템을 구현하기 위한
ttl-blog.tistory.com