spring프레임워크를 처음 접할 때 당황하게 되는 부분이
'무슨 설정이 이렇게 많어?'이다.
xml 지옥을 몸소 체험하는 느낌이랄까.

하지만 사실 알고보면 그냥 좀 많을 뿐. 그렇게 복잡한 것은 아니다.
샘플 프로젝트인 jpetstore(samples 밑에 있다)를 기준으로 상콤하게 정리해보자.

크게 설정할 부분은 6개이다.
  1. web.xml 설정
  2. 프로퍼티 파일 설정 (jdbc.properties, log4j.properties, mail.properties)
  3. applicationContext.xml 설정
  4. petstore-servlet.xml 설정
  5. ibatis의 dataAccessContext.xml 설정
  6. ibatis의 sql-map-config.xml 설정

자 그럼 하나씩 더 자세히 살펴보자.

1. web.xml 설정
  1. 웹루트 키 정의 => log4j.properties에서 로그파일의 생성 경로에 이용된다.
  2. log4j.properties 경로 지정
  3. applicationContext.xml, dataAccessContext.xml 등의 경로 지정
    (여기서 petstore-servlet.xml 는 제외한다. 어플리케이션이 구동 시에 자동으로 서블릿이름-servlet.xml이 로딩된다.)
  4. spring 서블릿 등록, 스프링에서 처리할 url 패턴 지정
    (네이버의 .nhn 도 이렇게 구현할 수도 있다. 아마 아파치 모듈을 썼다거나.. )
  5. 기타 서블릿 등록 (axis 등)
  6. 우리나라 필수!!! utf-8 인코딩 필터 지정

2. 프로퍼티 파일 설정
  1. jdbc.properties
  2. log4j.properties
  3. mail.properties

3. applicationContext.xml 설정
  1. 프로퍼티 파일들의 경로 지정(jdbc 등)
  2. 비즈니스 오브젝트 정의 - 벨리데이터, petStore(dao를 통합하고 있는 퍼사드 패턴으로 된 대표 클래스)
  3. Aspect 설정(AOP) - 트랜잭션
  4. 기타 - emailAdvice 나 RMI 익스포터 등 (쓸일은 있는 사람만 있는..)

4. petstore-servlet.xml 설정
  1. viewResolver 설정
    - web.xml에 설정된 spring의 컨트롤러에서 처리할 때 필요한 jsp 파일들의 경로 지정이다.
    - 파일의 앞 경로는 prefix에 쓰고 확장자는 suffix에 쓴다.
  2. 컨트롤러 정의
    - 여러가지 url 매핑핸들러에 따라, 컨트롤러를 연결시켜 준다.
    - Interceptor 지정을 통해서 url을 낚아채서 먼저 처리할 수도 있다
    - petStore, 각종 벨리데이터 등을 컨트롤러에 주입시키는 정의를 한다.

5. ibatis의 dataAccessContext.xml 설정
  1. dataSource 설정 - 위에 설정한 jdcb.properties의 속성들을 사용한다
  2. transactionManager 설정 - dataSource의 트랜잭션 매니저를 설정한다
  3. sqlMapClient - sqlmap의 경로를 지정한다
  4. Dao 정의 - ibatis의 DAO들을 정의한다

6. ibatis의 sql-map-config.xml 설정
  1. 실제 사용되는 쿼리들이 적힌 개별 xml 파일들의 경로를 정의한다.

이 정도면 기본적인 것들을 진행하는데 큰 무리가 없으리라 본다.
도움이 되길 바라며..


Posted by 시난
TAG