스프링의 역사
- 과거에 EJB라는 기술이 있었는데, 이 EJB를 대체하는 JPA라는 새로운 표준이 등장했다.
- 로드 존슨이라는 사람이 EJB의 문제점 지적하면서
- EJB 없이도 충분히 고품질의 확장 가능한 애플리케이션을 개발할 수 있음을 보여주고, 30,000라인 이상의 기반 기술을 예제 코드로 선보임
- 여기에 지금의 스프링 핵심 개념과 기반 코드가 들어가 있음
- BeanFactory, ApplicationContext, POJO, 제어의 역전, 의존관계 주입
- 책 출간 직후 Juergen Hoeller(유겐 휠러), Yann Caroff(얀 카로프)가 로드 존슨에게 오픈소스 프로젝트를 제안
- 스프링의 핵심 코드의 상당수는 유겐 휠러가 지금도 개발
- 스프링 이름은 전통적인 J2EE(EJB)라는 겨울을 넘어 새로운 시작이라는 뜻으로 지음
스프링이란?
스프링 생태계
스프링 프레임 워크
- 핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트, 기타
- 웹 기술: 스프링 MVC, 스프링 WebFlux
- 데이터 접근 기술: 트랜잭션, JDBC, ORM 지원, XML 지원
- 기술 통합: 캐시, 이메일, 원격접근, 스케줄링
- 테스트: 스프링 기반 테스트 지원
- 언어: 코틀린, 그루비
- 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용
스프링 부트
과거에 application 빌드부터 톰켓 서버 설치, 서버 띄우는 과거에 어려움을 겪었지만 스프링 부트는 매우 간편하게 만들어줌
- 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용
- 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
- Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
- 손쉬운 빌드 구성을 위한 starter 종속성 제공
- 라이브러리를 쓸 때 원래 여러개를 묶어서 import 해야 했었는데, 하나만 import하면 starter가 나머지 라이브러리까지 같이 import하도록 해뒀다.
- 스프링과 3rd party(외부) 라이브러리 자동 구성
- 스프링 부트 5.1에서는 외부라이브러리 어떤 버전을 써야하는지 알아서 챙겨준다. 외부라이브러리 버전에 대해서 고민하지 않아도 됨
- 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공
- 운영환경 모니터링 등을 기본적으로 어느정도 제공해준다
- 관례에 의한 간결한 설정
- 웬만하면 디폴트 설정이 있고 메뉴얼이 존재한다. 필요한 부분만 조금 변경해서 사용하면 된다
스프링 단어?
- 스프링이라는 단어는 문맥에 따라 다르게 사용된다.
- 스프링 DI 컨테이너 기술(스프링 빈 관리 등을 포함)
- 스프링 프레임워크
- 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계
스프링을 왜 만들었는가?
스프링의 진짜 핵심
- 스프링은 자바 언어 기반의 프레임워크
- 자바 언어의 가장 큰 특징 - 객체 지향 언어
- 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크
- EJB를 사용하면 EJB를 상속받으면서 의존적으로 개발하다 보니 객체지향의 장점을 다 잃어버렸다. EJB 스타일로 개발할 수 밖에 없었다.
- 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크
참조) 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강좌 (인프런 김영한)
'Spring > 핵심 원리' 카테고리의 다른 글
[Spring] 스프링 핵심 원리 이해 2_2 - IoC, DI, 그리고 컨테이너, 스프링으로 전환 (0) | 2024.07.17 |
---|---|
[Spring] 스프링 핵심 원리 이해 2_1 - 객체 지향 원리 적용 (0) | 2024.07.17 |
[Spring] 스프링 핵심 원리 이해(1) - 예제 만들기 (0) | 2024.07.11 |
[Spring] 객체 지향 설계와 스프링(3) - 좋은 객체 지향 설계의 5가지 원칙(SOLID) (0) | 2024.07.11 |
[Spring] 객체 지향 설계와 스프링(2) - 좋은 객체 지향 프로그래밍이란? (0) | 2024.07.11 |