이번 포스팅은 web 개발(java)을 할 때 자주 사용하는 framework인 Spring에 대해서 전반적인 느낌을 알아보겠습니다.
저의 블로그는 입문자들에게 거리감이 느껴지는 추상적인 개념들을 구체화해보면서 이전보다 친숙해지는 것을 목표로 하고있습니다. 이번 포스팅 또한 동일한 목표를 가지고 바로 시작하겠습니다.
* 참고1 : 해당 포스팅에서 사용하는 구조는 software design pattern의 MVC model 2를 채택하였고, IDE는 eclipse를 사용하였습니다.
* 참고2 : WAS와 software design pattern MVC model 2에 대한 사전지식이 필요합니다.
--------------------------------------------
[ 목차 ]
1. Spring 개념
2. Spring 구조
2.1 Bean 관점
2.2 MVC 관점
3. spring project 구성 (eclipes 기준)
4. spring 설정순서
--------------------------------------------
1. Spring 개념
- Spring은 개발 할 때 사용하는 Framework 입니다.
한국어로 번역하면 Frame(틀) + work(일) 으로 일(개발)을 효율적으로 하기위해서 사용하는 틀(frame) 입니다.
framework은 정해진 규칙을 지키면 개발의 생산성을 향상시킬 수 있는 특징이 있습니다.
일상생활에서 비유를 한다면 커피를 만들 때 핸드드립으로 만드는것은 시간과 정성이 많이 소모되지만, 커피머신으로 커피를 만든다면 간단한 버튼조작만으로 빠르게 커피를 만들 수 있습니다.
(조작 : 원두 글라인딩/농도, 물 양/온도, 라떼 등)
여기서 커피를 만들기위해 커피머신이 하는 역할이 Spring Framework과 유사합니다.
2. spring 구조
2.1 Bean 관점
- Bean을 관리하는 관점에서 spring framework의 구조를 확인해보겠습니다.
* Bean : spring container에서 관리하는 객체
* dispatcher servlet 객체 : client의 요청을 받아 처리할 controller와 view 를 제어하는 객체 (=front controller)
2.2 MVC 관점
- 다음으로는 MVC(sotfware design pattern) 관점에서 spring framework의 구조를 확인해보겠습니다.
* 파란색 박스 : spring 설정영역
* 빨간색 박스 : 개발자 코딩영역
* Handler = controller 를 포함하는 개념
3. spring project 구성 (eclipse)
- 해당 spring project 의 type은 'spring MVC project' 입니다.
* spring 의 설정은 java or xml 의 두가지 방법이 존재합니다.
RecommendBook_B : project 명 (=context path)
[controller, model]
src/main/java : java source (controller, DAO, DTO...)
spring 설정파일 (dispatcher, Bean) - java로 설정 할 경우
[view]
src/main/webapp/resource : 정적자원 (HTML, CSS, JS)
src/main/webapp/WEB-INF/spring : spring 설정파일 - xml로 설정 할 경우
src/main/webapp/WEB-INF/views : JSP 파일
src/main/webapp/WEB-INF/web.xml : tomcat 설정파일
pom.xml : Maven project 설정파일
4. spring 설정순서
- spring 을 설정하는 방법은 다양하게 존재하지만 가장 기초적인 설정에 대해서만 알아보겠습니다.
(이는 절대적인 순서는 아니며 개발자에 따라 차이가 있을 수 있습니다)
4.1 project 설정 (pom.xml)
- Maven, JdbcTemplate, dependency ...
4.2 tomcat 설정 (web.xml)
- servlet, 인코딩 등등
* 참고 : dispatcher servlet / bean 설정파일을 등록하는 과정이 필요함
4.3 dispatcher servlet 설정 (java or xml)
- Handler Mapping : client의 request를 수행 할 controller 객체를 mapping
- Handler Adapter : client의 request를 수행 할 controller객체의 method를 mapping
- view Resolver : client에 반환 할 view를 선택
- Resource Handler : webapp/resources 에 접근하기 위한 설정
4.4 Bean 설정 (java or xml)
- Aspect 설정 : autoproxy
- 각종 bean을 생성 (controller, view, model, aspect ...)
4.5 Bean 정의 (java)
- Controller : request URL mapping 설정 + logic
- View
- Moded (service, DAO)
- DTO
* 마치며
이로써 Spring의 개념부터 구조와 설정순서까지 알아보았습니다. Spring 은 software 개발을 도와주는 역활을 하는 도구이기 때문에 구조와 설정이 가장 중요하다고 생각합니다.
저와 같은 spring 입문자들에게 조금이나마 도움이 되셨기를 바라면서 포스팅을 마치겠습니다.