본문 바로가기

Spring

1. Spring의 개요 및 부속 프로젝트의 간단 개념정리

- 개요

Spring Framework는 J2EE(Java2 Platform, Enterprise Edition)를 이용하여 Application을 쉽게 개발할 수 있도록 도와주며, 성능문제 뿐만 아니라 이를 해결할 수 있는 방법에 대해 제공해주는 오픈소스 프로젝트다.

2004년에 1.0 버전부터 시작하여, 2006년에 2.0 버전, 2009년에 3.0 버전, 2013년에 버전 4.0이 발표되었다.

# 버전별 새롭게 추가된 기능

V 1.x : IoC(Inversion of Control), AOP(Aspect Oriented Programming), XML 기반 Bean 정의, Transaction 관리, Data Access

V 2.x : Spring Security, Spring Web Flow, Annotation 방식을 이용한 DI, MVC 구현, Spring Integration, Spring Batch

V 3.x : Java-based Configuration, JSR 330, JPA, RESTful 기반 제공

V 4.x : WebSocket, Web Messaging

- Spring MVC

Spring MVC는 Web Application 개발을 위한 프레임워크로 MVC 패턴을 채택하고 있다.

MVC 패턴을 적용한 프레임워크들은 액션 기반 프레임워크와 컴포넌트 기반 프레임워크로 나눈다.

액션 기반 프레임워크

실행할 처리 행위(action)을 결정하고, 처리 결과로 HTML과 같은 응답을 반환하는 프레임워크.

Spring MVC가 액션 기반 프레임워크에 해당된다.

컴포넌트 기반 프레임워크

요청과 응답을 추상화하고, 화면을 구성하는 컴포넌트를 기반으로 Web Application을 개발하는 프레임워크. JSF가 컴포넌트 기반의 프레임워크이다.

 

Spring MVC는 *POJO(Plain Old Java Object) 형태로 구현하는 방식, Annotation 기반 설정, Servlet API의 추상화, DI 컨테이너와의 연계 등 다양한 기능을 제공한다.

POJO(Plain Old Java Object)
프레임워크 종속성을 가지지 않는 자바 객체로 주로 자바 Model이나 기능을 나타냄.
객체지향적인 원리에서 충실하며, 여러 환경과 기술에 종속되지 않고 사용되는 방식.

- Spring Security

Spring 기반의 Application에 인증 또는 인가와 같은 보안 기능을 쉽게 구현할 수 있도록 제공해주는 프레임워크이다. 인증 방식으로는 Basic, Digest Authenticationn, X.509 클라이언트 인증서, LDAP(Lightweight Directory Access Protocle), Open ID등의 방식을 제공한다.

 

또한 Web Application의 보안을 강화하기 위해 CSRF(Cross Site Request Forgery), Security HTTP Response Headers, Session Management와 같은 보안기능도 제공한다.

- Spring Data

RDB와 NoSQL, Key-Value 저장소 같은 다양한 데이터 저장소의 데이터에 손쉽게 접근할 수 있게 해주는 프레임워크이다. 대표적으로 Spring Data JPA(Java Persistence API)와 Spring Data MongoDB, Spring Data Redis 등이 존재한다.

- Spring Batch

Batch Application을 개발하기 위한 경량 프레임워크로, 대량의 데이터를 처리하는 데 필요한 공통 기능을 제공한다. Batch 처리에 필요한 Transaction이나 자원 관리 기능과 같은 공통 기능과 Partitioning 기능도 사용할 수 있다.

- Spring Integration

EIP(Enterprise Integration Patterns)로 알려진 시스템 연계 아키텍처 패턴에 기초해서 연계 Application을 쉽게 개발할 수 있게 도와주는 프레임워크다. 시스템 간의 복잡한 연계 구조를 풀어주기 위한 단순한 모델을 제공해준다.

다양한 엔드포인트 간의 메시지 교환을 프레임워크 수준에서 추상화함으로써 엔드포인트의 차이를 의식하지 않고 시스템을 연계하게 해준다.

- Spring Boot

최소한의 설정만으로도 Spring 기반 Application을 쉽게 개발할 수 있게 도와주는 스프링 프로젝트다. 초반에 Spring 프로젝트를 구성하기 위해선 복잡한 환경설정이 필요했지만, Spring Boot를 이용하면 XML이나 자바 기반 설정을 이용한 Bean 정의나 Servlet 설정을 하지 않아도 동작된다.

 

참고서적 : 스프링 철저 입문