목차
- 스프링을 이용해 애플리케이션 프로젝트를 처음 구성할 때 알아가야 할 기본적인 내용을 다룬다.
- 스프링 개발에 도움이 되는 개발 툴과 빌드 방법을 살펴본다.
- 스프링을 애플리케이션에 적용할 수 있는 아키텍처의 종류와 특징에 대해서 알아본다.
요약
- 스프링 프레임워크는 범용적이고 유연해서 어떤 종류의 아키텍처나 프로젝트에도 적합하지만, 기본적으로 자바 엔터프라이즈 플렛폼에 최적화 되어있고, HTTP를 통해 접근하는 웹 클라이언트와 백엔드 DB를 사용하는 애플리케이션에 적합하다.
- 책에서 개발의 생산성을 증대시키고 품질을 높이기 위한 IDE와 tool로 eclipse와 STS를 주로 소개한다. (요즘은 intellij를 많이 쓰는거 같음)
- 스프링은 의존 라이브러리가 방대하기 때문에 라이브러리 관리와 의존관계를 관리하는데 심혈을 기울여야 한다. 책에서 의존관계 정보를 제공해주는 Maven이나 Ivy 같은 빌드 툴을 소개한다. (요즘은 gradle을 많이 쓰는거 같음)
- 스프링 애플리케이션은 역할에 따라 3계층으로 구분되고, 다시 기술의 추상도에 따라 세분화되는 계층형 아키텍처를 사용하는 것이 좋다.
- 아키텍처는 애플리케이션이 다루는 정보의 관점에서 데이터 중심과 오브젝트 중심으로 구분할 수 있다. 스프링에 가장 잘 어울리는 아키텍처는 오브젝트 중심의 아키텍처다.
9.1 자바 엔터프라이즈 플렛폼과 스프링 애플리케이션
스프링은 주로 자바 엔터프라이즈 환경에서 동작하는 애플리케이션을 개발하는 목적으로 사용된다. 자바 엔터프라이즈 애플리케이션은 서버에서 동작하며 클라이언트를 상대로 서비스를 제공하도록 되어있다. 즉, 클라이언트의 요청을 받아서 그에 대한 작업을 수행하고 그 결과를 돌려주는 것이 기본적인 동작 방식이다.
9.1.1 클라이언트와 백엔드 시스템
엔터프라이즈 애플리케이션은 자신이 클라이언트가 돼서 또 다른 엔터프라이즈 시스템에 서비스를 요청할 수도 있다. 가장 많이 사용되는 구조는 클라이언트가 웹 브라우저이고 백엔드 시스템이 DB인 구성이다. (DB를 사용하는 웹 애플리케이션) 스프링의 주요 기능은 웹 브라우저를 클라이언트로 하고 DB에 데이터를 저장, 조회하는데 집중되어 있다.

9.1.2 애플리케이션 서버
스프링으로 만든 애플리케이션을 자바 서버환경에 배포하려면 JavaEE 서버가 필요하다. JavaEE 표준을 따르는 애플리케이션 서버는 크게 두가지 형태로 구분할 수 있다.
- 경량급 WAS/서블릿 컨테이너 - 스프링은 기본적으로 Tomcat이나 Jetty같은 가벼운 서블릿 컨테이너만 있어도 충분하다. EJB나 리소스 커넥터, WAS가 제공하는 분산 서비스 등이 굳이 필요하지 않다면 서블릿 컨테이너로도 엔터프라이즈 애플리케이션에 필요한 핵심기능을 모두 이용할 수 있다. 기존에 EJB와 WAS를 사용해야 가능했던 선언적인 트랜잭션이나 선언적 보안, DB 연결 풀링, 리모팅이나 웹 서비스는 물론이고 추가적인 라이브러리의 도움을 받으면 분산/글로벌 트랜잭션까지도 가능하다.
- WAS - 고가의 WAS는 미션크리티컬한 시스템에서 요구하는 고도의 안정성이나 고성능 시스템에서 필수적인 안정적인 리소스 관리, 레거시 시스템의 연동이나 기존 EJB로 개발된 모듈을 함께 사용하는 등의 필요가 있다면 상용 또는 오픈소스 WAS를 이용할 수 있다. 또 WAS는 상대적으로 관리 기능이나 모니터링 기능이 뛰어나서 여러 대의 서버를 동시에 운영할 때 유리한 점이 많다.
스프링소스 tcServer