본문 바로가기

Project

스프링의 장점?

 지난 7월에서 11월 약 4개월동안 스프링을 사용해 프로젝트의 Phase1작업이 끝났다.
생애 처음으로 스프링을 만져봤지만 잘짜여진 프레임웍크와 문서(手順書)를 통해 나름 좋은
작품을 만들었다고 만족 하고 있다.
 잘짜여진 아키텍쳐 아래 나쁜 코드는 없다고 시행착오를 겪어가며 만들어간 코드 하나하나가 자신의
Layer에서 자신이 목적한바를 구현하는걸 보면 기분이 좋아진다.

대략 이전 프로젝트의 아키텍쳐를 설명하자면,

 Presentation   - Facade    -    Service     -        Integration  -  DAO
  Struts              [                    Spring                           ]     iBatis

의 계층으로 구성되어 있고 각 층사이에는 Interface를 통해 소통한다.

Spring AOP를 통해 Logging 과 Exception ,그리고 Transaction DB을 구현하고 있다.

1. Presentation
    Struts로 이미 익숙한사람들의 생산성을 높여줄수있고,
    (Struts가 최선의 선택은 아니라고 보지만 재교육비용과 프로젝트기간을 생각하면 좋은선택이라고생각한다.)
2. Service(Business Logic)
    Spring을 통해 DB transaction과 Exception,Logging처리 ,
    Spring DI를 통해 POJO의 생명 주기 관리,
3. DAO
    iBatis를 통해 동적Sql및 복잡한 쿼리문의 생성, Business층의 로직부하를 줄이고 ORM구현

의 구조이다.
전 계층 사이에는 Framework의 Interface를 실장하여 각 층을 Loose coupling화 시켰다.

처음에 Spring을 만져보며 복잡한 XML설정,DI 및 Interface프로그래밍을 통해 얻을수있는
Loose Coupling의 장점이 무엇일까 고민했지만 점점 스프링의 만져가며 그 철학을 보고는
빠져들어갔다.

 먼저 BeansFactory및 DI를 통해 Bean의 생명주기를 관리함으로서 Bean(Object)의 생존수명을
신경쓰지않고 비지니스로직을 구현할수있다. 각 Bean의 의존성도 Interface를 통해 실장 함으로서
줄일수있다.

 ...계속...