Spring Framework
- 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크이자 IoC(Inversion of Control) 컨테이너
- 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공
- 경량 컨테이너로 자바 객체를 담고 직접 관리
구성 모듈
Spring Core Container
- 스프링에서 객체의 생성과 관리를 담당
- DI(Dependency Injection)과 IoC(Inversion of Control) 개념이 구현되어 있음
AOP(Aspect Oriented Programming)
- 객체지향 프로그래밍에서의 코드 중복을 제거하고 코드를 재사용하기 위한 프로그래밍 기법
- 기존의 코드를 변경하지 않고 새로운 기능을 추가하는 방식으로 사용
- 로깅, 트랜잭션, 보안 등의 기능을 제공
Aspect
- 별도의 spring-aspects 모듈은 AspectJ와의 통합을 제공
Instrumentation
- 자바 프로그램의 동작을 관찰하고 조작하는 기술
- 클래스 로딩, 메소드 실행 등의 작업을 추적하고 변경 가능
Messaging
- Apache Kafka 및 RabbitMQ와 같은 메시지 브로커의 통합을 통해 메시징 아키텍처를 지원
- 메시지 채널, 메시지 처리기 및 메시징 기반 응용 프로그램을 생성할 수 있는 메시지 끝점에 대한 추상화가 포함
- 메시지 채널에서 메시지를 수신하고 처리할 수 있는 메시지 구동 POJO(Plain Old Java Objects)를 생성 가능
Data Access / Integration
JDBC
- Java에서 데이터베이스와 연결할 수 있는 API
- 쿼리를 실행하고 결과를 처리할 수 있는 메서드와 클래스를 제공
ORM(Object Relation Mapping)
- 객체 지향 프로그래밍에서 관계형 데이터베이스와의 상호작용을 추상화하는 프로그래밍 기술
- 객체와 데이터베이스 간의 매핑을 담당
- 데이터베이스 쿼리를 생성하고 실행하는 등의 작업을 대신 수행
Transaction Management
- 트랜잭션 관리 기능 제공
- 선언적 트랜잭션 처리, 프로그램적 트랜잭션 처리 등
- 트랜잭션 속성을 XML이나 어노테이션을 이용해 설정 가능
OXM(Object XML Mapping)
- 자바 객체와 XML 문서 간의 매핑을 지원하는 모듈
Java Messaging Service(JMS)
- 자바에서 메시지를 주고 받을 수 있는 API
- 분산 시스템에서 메시지를 교환 가능
- 메시지 전송과 수신을 위한 스펙과 메시지의 속성을 정의하기 위한 API를 제공
Web
servlet
- 웹 애플리케이션 서버에서 실행되는 자바 클래스
- 클라이언트의 요청을 처리하고, 응답을 생성하는데 사용
Web
spring web mvc
- 스프링에서 제공하는 웹 어플리케이션 개발을 위한 MVC 패턴 구현 모듈
Spring WebFlux
- 스프링 5에서 추가된 모듈로, 비동기 웹 어플리케이션 개발을 위해 Reactive Streams를 지원하는 모듈
webSocket
- HTTP와 달리 양방향 통신을 지원하는 프로토콜
- 서버와 클라이언트 간의 실시간 양방향 통신이 가능
- Spring Websocket 모듈은 STOMP(Subscribable-Text-Oriented Messaging Protocol) 프로토콜을 이용하여 WebSocket을 구현
- STOMP는 WebSocket을 이용하여 메시지를 주고 받을 때 사용되는 메시지 프로토콜
Portlet
- 웹 페이지를 구성하는 데 사용되는 모듈이며, 클라이언트의 요청에 따라 동적으로 로드
- 특정 Portlet 컨테이너에서 실행되어야 하며, Portlet 컨테이너는 웹 서버에서 분리되어 실행
Test
- spring-test 모듈은 JUnit 또는 TestNG를 사용하여 Spring 구성 요소의 단위 테스트 및 통합 테스트를 지원
- Spring ApplicationContexts의 일관된 로딩과 해당 컨텍스트의 캐싱을 제공
- 코드를 별도로 테스트하는 데 사용할 수 있는 모의 개체를 제공