오늘은 Spring Framework에 대해 알아보자.
- 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로 간단하게 스프링(Spring)이라고 불린다.
- 동적 웹 사이트를 개발하기 위해 여러가지 서비스를 제공하며, 대한민국 공공기관의 웹 서비스 개발 시에 권장하는 전자정부 표준 프레임워크(Spring MVC Project 기반 프레임워크)의 기반 기술로써 쓰이고 있다.
이름 | 설명 |
---|---|
IOC (Inversion of Control) 제어 반전 | 컨트롤의 제어권이 프레임워크에 있으며 객체의 생성부터 모든 생명 주기의 관리까지 프레임워크가 주도한다. 객체를 생성하고, 직접 호출하는 프로그램이 아닌, 만들어둔 자원을 호출해서 사용한다. |
DI (Dependency Injection) 의존성 주입 | 설정 파일이나 어노테이션을 통해 객체간의 의존 관계를 설정하여 개발자가 직접 의존하는 객체를 생성할 필요가 없다. |
POJO 기반 프레임워크 (Plain Old Java Object) | J2EE, EJB와 같은 특정 기술이나 라이브러리의 내용을 상속받아 클래스를 구현하지 않고 일반적인 기본 기능만을 가진 순수한 자바 객체를 의미한다. 특정 클래스에 종속되지 않아 자바의 객체지향적인 설계가 쉬워지고, 코드길이 감소, 유지보수성 증가, 기존 Java API, 라이브러리 지원에 용이하다. |
Spring AOP (Aspect Oriented Programing) 관점 지향 프로그래밍 | 트랜잭션, 로깅, 보안 등 여러 모듈, 여러 개층에서 공통으로 필요로 하는 기능의 경우 해당 기능들을 분리하여 관리한다. |
Spring JDBC | Mybatis나 hibernate 등의 데이터베이스를 처리하는 영속성 프레임워크와 연결할 수 있는 인터페이스를 제공한다. |
Spring MVC | MVC 디자인 패턴을 통해 웹 어플리케이션의 Model, View, Controller 사이의 의존 관계를 DI 컨테이너에서 관리하여 개발자가 아닌 서버가 객체들을 관리하는 웹 애플리케이션을 구축할 수 있다. |
PSA (Portable Service Abstraction) | 스프링은 다른 여러 모듈을 사용함으로써 별도의 추상화 레이어를 제공한다. 예를 들어 JPA를 사용할 때 Spring JPA를 사용하여 추상화하므로 실제 구현에 있어서 개발자는 이 모듈의 의존 없이 프로그램에 집중할 수 있다. |
모듈명 | 내용 |
---|---|
spring-beans | 스프링 컨테이너를 이용해 객체를 생성하는 기본 기능을 제공 |
spring-context | 객체 생성, 라이프 사이클 처리, 스키마 확장 등의 기능을 제공 |
spring-aop | AOP 기능을 제공 |
spring-web | REST 클라이언트 데이터 변환 처리, 서블릿 필터, 파일 업로드 지원 등, 웹 개발에 필요한 기반의 기능들을 제공 |
spring-webmvc | 스프링 기반의 MVC 프레임워크, 웹 애플리케이션을 개발하는데 필요한 컨트롤러, 뷰 구현을 제공 |
spring-websocket | 스프링 MVC에서 웹 소켓 연동을 처리할 수 있도록 제공 |
spring-oxm | XML과 자바 객체간의 매핑을 처리하기 위한 API 제공 |
spring-tx | 트랜잭션 처리를 위한 추상 레이어를 제공 |
spring-jdbc | JDBC 프로그래밍을 보다 쉽게 할 수 있는 템플릿 제공 |
spring-orm | Hibernate, JPA, Mybatis 등과의 연동을 지원 |
spring-jms | JMS 서버와 메시지를 쉽게 주고 받을 수 있도록 하기 위한 템플릿 |
spring-context-support | 스케쥴링, 메일발송, 캐시연동, 벨로시티 등 부가 기능을 제공 |