1. 스프링이란?
스프링은 스프링 하나가 아니라 여러 기술들의 모임이다. 핵심이 되는 스프링 프레임워크, 여러 기술을 편리하게 사용하도록 도와주는 스프링 부트 이외에도 스프링 데이터, 스프링 세션, 스프링 시큐리티 등 여러 가지가 존재한다. 스프링은 아래와 같이 문맥에 따라 다른 의미를 나타내기도 한다.
- 스프링 DI 컨테이너 기술
- 스프링 프레임워크
- 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 기술들
2. 스프링 프레임워크
가장 중요한 것은 스프링 프레임워크다. 스프링 프레임워크는 여러 기술들의 집합이다. 스프링 DI 컨테이너, AOP, 이벤트 등의 핵심 기술, 스프링 MVC 등의 웹 기술, 트랜잭션, JDBC, ORM 지원 등 데이터 접근 기술, 캐시, 이메일, 원격 접근 등의 기술 통합, 스프링 기반 테스트 지원, 코틀린 지원 등 여러 기술들이 모여 있다. 최근에는 스프링 부트를 통해 스프링 프레임워크의 기술들을 편리하게 사용한다.
3. 스프링 부트
스프링 부트는 스프링을 편리하게 사용할 수 있도록 지원하며 최근에는 기본으로 사용한다. 스프링 부트의 장점으로는 다음 내용들이 존재한다.
- Tomcat 등 웹 서버를 내장하므로 웹 서버를 별도로 설치하지 않아도 된다.
- starter 종속성 제공을 통해 손쉬운 빌드 가능 → 기본 스프링은 여러 라이브러리가 필요하면 모두 따로 불러야 하지만 스프링 부트는 이를 통해 한 번에 불러올 수 있음
- 3rd parth(외부) 라이브러리 자동 구성 → 과거에는 스프링 프레임워크 3.1인 경우 외부 라이브러리의 특정 버전과는 잘 안 맞는 경우가 있었다. 스프링 부트는 스프링 프레임워크의 버전에 맞추어 외부 라이브러리 버전을 다 맞춰준다.
4. 핵심 개념
로드 존슨은 왜 스프링을 만들었을까? 그리고 이 기술의 핵심 컨셉은 무엇일까? DB 접근을 편리하게하고, 웹 서버를 자동으로 띄워 주는 등의 편리함은 단순히 결과물일 뿐이다. 진짜 핵심은 스프링은 자바 언어 기반의 프레임워크라는 것이다. 자바는 객체 지향 언어다. 스프링은 이러한 객체 지향 언어의 강력한 특징을 살려내기 위한 ㅠㅡ레임 워크로 좋은 객체 지향 애플리케이션을 개발할 수 있도록 도와주는 프레임워크다. 과거 EJB를 사용할 때 EJB에 의존적으로 개발을 했다. 이 때문에 객체지향이 가진 장점을 잃어버렸다. 이를 보완해 좋은 객체 지향 프로그램을 제작하도록 도와주는 것이 스프링인 것이다.
'BackEnd > Spring' 카테고리의 다른 글
[Spring] 좋은 객체 지향 설계의 5가지 원칙 (SOLID) (0) | 2023.08.17 |
---|---|
[Spring] 좋은 객체 지향 프로그래밍 (0) | 2023.08.09 |
[Spring] 스프링 탄생 배경 (0) | 2023.08.07 |
[Spring] ERROR: org.springframework.web.servlet.DispatcherServlet - Context initialization failed (0) | 2023.05.14 |
[Setter Injection] p Namespace (0) | 2023.04.28 |