스프링이 만들어지기 전에는 어떤 기술이 있었는지 먼저 살펴보고, 이후 스프링이 어떤 핵심 가치를 가지고 탄생을 하게 됐는지에 대한 내용을 작성합니다. 그리고 스프링의 핵심 가치인 "객체 지향 설계"에 대한 내용을 살펴봅니다.
스프링이 만들어지기 전
EJB (Enterprise Java Bean)
- 당시 자바에서 제시하는 표준 기술이었다.
- 기업용 자바빈 컴포넌트를 관리하는 기능을 제공하는 서버 어플리케이션이다.
- 스프링과 마찬가지로 빈을 활용한 여러가지 사용성을 제공했다.
- 데이터 베이스와의 연결하여 쿼리 등을 자동으로 생성 등등
- 하지만 비싼 가격, 플랫폼에 종속적인 개발, 어려운 사용성 등 단점 때문에 불편을 갖는 개발자들이 존재했다.
Spring
- EJB 를 사용하기 어려워서 한 개발자가 직접 프레임워크를 만들었다.
- EJB의 긴 겨울이 끝나고 Spring의 봄이 왔다는 의미로 Spring이라고 한다.
- 객체 지향적인 설계에 의거하여 다양한 기능을 품고 있다.
Hibernate
- 비슷한 시긴에 같은 이유(EJB 를 사용하기 어려워서)로 새로운 ORM 기술을 개발했다.
- 오픈소스로 개발이 되었다.
- 자바에서 개발진을 그대로 흡수하고 기존과 거의 비슷한 방식으로 JPA 기술을 개발했다.
- Hibernate는 실무를 기준으로 제작된 기능이고, JPA는 자바의 표준을 확립한 기능이기 때문에 두마리 토끼를 모두 잡았다.
스프링이란?
스프링은 그 단어를 사용하는 문맥에 따라 의미가 변하기도 한다. 하지만 대표적으로 스프링이라고 하면 스프링에서 제공하는 여러 프로젝트가 모인 하나의 생태계로 이해할 수 있다.
- 스프링 프레임워크
- DI, 트랜잭션 관리, 웹 어플리케이션, 데이터 접근 등의 핵심 기술을 제공한다.
- 스프링 부트
- 스프링 어플리케이션을 편리하게 사용할 수 있는 여러 기능을 제공한다.
- 기존 스프링의 문제점(많은 설정, 의존 라이브러리 버젼 관리 등)을 쉽게 할 수 있도록 기능을 제공한다.
- 톰캣 서버를 자체적으로 내장하고 있어서 독립 실행이 가능하다.
- 스프링 데이터
- 스프링에서 데이터에 접근할 수 있는 많은 모듈을 제공한다.
- JPA, JDBC, REST, Redis 등등
- 스프링 배치
- 처리량이 많은 작업에 대한 배치 작업을 제공한다.
- 등등
스프링의 핵심은 객체 지향 설계를 기반으로 한다는 점이다.
해당 내용은 [스프링 핵심 원리 - 김영한] 강의를 듣고 작성한 내용입니다.
'Spring' 카테고리의 다른 글
스프링 의존관계 자동주입 (@Autowired) (0) | 2021.11.29 |
---|---|
Bean Factory 와 Application Context (0) | 2021.11.23 |
스프링 컨테이너에 등록된 모든 빈 조회 (0) | 2021.11.22 |
좋은 객체 지향 설계의 5가지 원칙(SOLID) (0) | 2021.11.19 |
스프링의 핵심 컨셉 (0) | 2021.11.19 |