asciidoc 으로 작성해본 스프링 애플리케이션 개발 프로세스 및 분석 방법
Spring application development and analysis process
최근 스프링개발환경은 많은 변화가 있었다. 고전적인 XML 설정방식외에도 JavaConfig 방식이 가능해졌고, 기존에 설정의 복잡함을 줄이기 위한 관례적인 설정을 자동으로 제공하는 자동설정Auto-configuration을 제공하는 스프링부트(http://projects.spring.io/spring-boot/) 프로젝트를 기반으로 한 애플리케이션 개발환경이 제공되고 있다.
1. 스프링애플리케이션 개발순서
스프링애플리케이션 기능설계
스프링 프로젝트 빌드
web.xml 설정
servlet 3.0+ 이상을 적용하는 경우에는 ServletInitializer를 통해서 web.xml 설정 대체가능
스프링 애플리케이션 컨텍스트ApplicationContext 설정
application-context.xml(DAO, 서비스 영역)
datasource 설정
AOP 설정
web-application-context.xml(웹 영영)
security-context.xml(웹접근 인증 설정)
URL과 사용자 권한을 기준으로 접근제어
애플리케이션 컨텍스트 정상설정 테스트
MyBatis 를 사용하느냐, 하이버네이트등의 ORM 을 사용하느냐에 따라 DB 사용방식 달라짐
MyBatis 인 경우에는 Database 에 스키마와 테이블들이 생성되어 있어야 함
Mapper 클래스 및 SQL 을 설정해줘야 함
iBatis 말고 MyBatis 사용을 권장: iBatis는 개발지원이 끝난지 꽤 되었음
MyBatis와 관련된 부분은 MyBatis를 참고
ORM인 경우에는 개발단계에서
ddl-auto
의 설정을 통해서 테이블 및 컬럼의 자동생성처리가 가능Spring Data JPA를 사용할 경우 기본적인 CRUD 처리를 JPARepository를 통해서 처리가 가능함
이와 관련된 자세한 내용은 자바 ORM 표준 JPA 프로그래밍 을 살펴보기
이후 애플리케이션의 패키지를 구성하고 기능별로 계층을 나눠 개발
예
위와 같은 형태로 기능별로 계층을 나눠 개발하기도 하고
와 같은 기능별 패키지로 나눠 개발하는 방식도 있습니다. 저도 최근에 이 방식으로 변환을 시도하고 있다.
위와 같은 형태로 개발을 진행합니다.
애플리케이션 개발에 있어서 MyBatis 보다는 JPA 사용을 선호함. MyBatis 는 4년전 이후로 사용해본 경험없음
ORM을 기반으로 개발하면 엔티티 객체를 기반으로 해서 DB와의 매핑처리도 쉽고 기능구현도 쉬움.
스프링부트를 기반으로 개발하게 될 경우, 스프링과 관련된 설정의 부담감이 줄고 개발에 필요한 라이브러리들을 `Starter-POM`s 를 통해서 쉽게 처리가 가능하기 때문에 스프링 프레임워크에 대한 이해가 어느정도 있는 개발자에게는 스프링부트 사용을 권함 |
1.1. 화면개발
기본설정이 완료된 후에는 개발하는 화면에 따라 기능 구현 시작
JSP 페이지 등의 템플릿 파일 작성
Controller
ModelAndView
에 템플릿 페이지 등록ajax 를 활용할 경우 화면처리를 담당할 컨트롤러와 데이터를 JSON으로 처리해줄 컨트롤러를 분리하면 좋음
Spring 4.0 이후
@RestController
애노테이션이 생겨서 요청한 컨텐트타입으로 반환해주는 컨트롤러를 만들 수 있음
화면에 필요한 데이터를 담을 데이터들을
ModelAndView
혹은 템플릿엔진을 사용하는 경우에는 Model에 담아주면ViewResolver
에 의해서 처리됨화면에 필요한 데이터에 따라서
Controller
에서Model
에 담아주는 데이터가 달라지고 이는Service
의 구현이 필요해짐화면데이터에 따라 데이터, 서비스 가 달라짐
2. 스프링 애플리케이션 분석
2.1. 고전적인 XML 설정을 기반으로 한 경우
web.xml
찾아서 애플리케이션 필터 설정들을 확인application-context.xml
혹은*-context.xml
파일 분석application-context.xml
: 파일은 보통src/main/resource/META-INF
에 위치web-application-context.xml
: 파일은 보통WEB-INF
에 위치프로젝트를 설정한 사람에 따라 파일명이나 위치는 다를 수 있으므로 파일찾기를 통해서 찾아보기 바람
DB 설정 확인
애플리케이션 패키지 구성 확인
애플리케이션을 구동하면서 찍히는 로그를 통해서 동작순서 확인
관련한 설정 확인
2.2. JavaConfig 인 경우
@Configuration
애노테이션을 사용한 클래스 탐색나머지 항목들은 고전적인 XML 설정을 기반으로 한 경우 와 동일
2.3. STS를 이용한 경우
STS: Spring Tool Suite http://spring.io/tools/sts |
spring explorer view 를 활용해서 각 설정빈을 확인 가능함
3. 참고자료
Spring Reference Document: http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle
레퍼런스 문서가 최고입니다.
스프링 레퍼런스 번역: http://blog.outsider.ne.kr/category/JAVA/Framework
토비의 스프링 3.1: http://www.yes24.com/24/Goods/7516911?Acode=101
스프링 4 프로그래밍 입문: http://www.yes24.com/24/goods/16927038
웹 개발자를 위한 Spring 4.0 프로그래밍: http://www.yes24.com/24/goods/13987797
SpringBoot Reference Document: http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/
자동설정을 이용한 빠른 스프링 웹애플리케이션 개발 플랫폼
스프링 부트 번역: https://github.com/ihoneymon/translate-spring-boot-reference/
스프링부트 소개: http://java.ihoney.pe.kr/372
만들다 만 프로젝트… https://github.com/ihoneymon/honeymon-blog