스프링이란?
스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한
오픈 소스 애플리케이션 프레임워크로 간단히 스프링(Spring)이라고도 합니다.
스프링의 유래
스프링은 JavaEE(Java Enterprise Edition)의 스펙을 구현한 EJB(Enterprise Java Bean)가
기술의 복잡도가 증가해서 성능이 느렸던 것을 탈피하여, EJB 시절을 "겨울"에 빗대어 겨울 후의 "봄"으로
새로운 시작을 의미하여 Spring(봄)이 되었습니다.
EJB
EJB는 비즈니스 객체들을 관리하는 컨테이너로부터 필요한 객체를 꺼내 사용하는 방식으로
객체들 간의 의존성을 해결하려고 했습니다.
하지만, 코드들이 EJB 기술에 지나치게 종속되는 문제가 발생하게 됩니다.
POJO(Plain Old Java Object)
그러던 중 2000년 9월 강연을 준비하던 마틴 파울러(Martin Fowler), 레베카 파슨(Rebecca Parsons), 조쉬 맥킨지(Josh Mackenzie) 등이 POJO라는 단어를 만들었습니다.
POJO는 오래되고 순수한 Java 자바로 생성하는 객체를 의미합니다.
즉, 언어 사양 외에 어떠한 제한에도 묶이지 않은 자바 오브젝트라고 할 수 있습니다.
참고 : https://www.martinfowler.com/bliki/POJO.html (마틴 파울러가 POJO를 만든 이유)
스프링 프레임워크의 탄생
이러한 배경속에서 스프링은 로드 존슨(Rod Jonson)이 2002년에
출판한 저서 Expert One-on-One J2EE Design and Development에서
선보인 소스 코드를 시작으로 점점 발전하게 되었습니다.
그러다가 2003년 6월에 최초로 공개되었습니다.
스프링 모듈
위의 이미지와 같이 스프링 프레임워크는 총 6개의 모듈로 구성되어 있습니다.
- Core : 제어 역전(IoC)과 의존성 주입(DI) 기능을 제공합니다.
- DAO : JDBC 추상 계층을 제공합니다. JDBC는 자바의 데이터베이스 커넥터입니다.
- ORM : JPA, Hibernate와 같은 ORM이나 MyBatis 같은 데이터베이스 API 등과 통합할 수 있는 기능을 제공합니다.
- AOP : 스프링 프레임워크에서 제공하는 AOP 패키지를 제공합니다. AOP는 관점 지향 프로그래밍으로 어떠 로직을
기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 모듈화 하겠다는 의미입니다. - Web : Spring Web MVC, Struts, WebWork 등 웹 애플리케이션 구현에 도움이 되는 기능을 제공합니다.
- JEE : EJB, JMX 등의 엔터프리아지 J2EE 스펙에 관한 기능을 제공합니다.
스프링부트(Spring boot)
스프링 부트는 스프링을 기반으로 하여 애플리케이션을 쉽게 생성하고 배포하기 위해 개발된 모듈입니다.
기본적으로 의존성 관리와 라이브러리의 설정을 해주며, 웹서버가 하나의 파일에 내장된 상태로 빌드되기 때문에
배포가 매우 간편해집니다.
참고 : https://wikidocs.net/160047 (점프 투 스프링)
내용 참고 : 망나니 개발자, 천방지축 개발노트, 스프링프레임워크(나무위키), AOP
'자바 탐구' 카테고리의 다른 글
자바) Stream API - 2) 함수형 인터페이스(Functional Interface) (2) | 2024.06.09 |
---|---|
자바) Stream API - 1) 람다 표현식(Lambda Expression) (0) | 2024.06.09 |
JPA) N + 1 문제 (0) | 2023.08.01 |
자바) 예외 클래스 (0) | 2023.08.01 |
자바) 오버로딩과 오버라이딩 (0) | 2023.07.31 |