티스토리 뷰

(p.81)

3-11. Collection 엘리먼트의 데이타 타입 명시하기

문제

기본적으로 스프링은 컬렉션에 있는 모든 엘리먼트를 문자열로 처리한다.

해결책

  • 컬렉션의 각 엘리먼트 value 태그에서 type 속성을 이용한다.
  • 컬렉션 태그에서 value-type 속성을 사용하여 모든 엘리먼트에 적용
  • Java 1.5 이상의 버전의 경우, type-safe 방식으로 정의하면 스프링이 알아서 처리한다.

(p.84)

3-12. Factory beans 와 Utility 스키마를 이용해서 컬렉션 정의하기

문제

기본 컬렉션 태그로 컬렉션을 정의할 때, LinkedList, TreeSet, TreeMap 같은 구상 클래스를 정의할 수 없다. 게다가 다른 bean들 사이에서 컬렉션을 공유하기 힘들다.

해결책

  • 대응되는 factory bean을 이용
    • ListFactoryBean : LinkedList
    • SetFactoryBean :TreeSet
    • MapFactoryBean : TreeMap
  • 스프링 2.x 에서 소개된 util 스키마를 이용


(p.86)

3-13. Classpath 로부터 컴포넌트들 스캔하기

문제

스프링 IoC 컨테이너가 컴포넌트들을 관리하기 위해 bean 구성파일에 하나씩 컴포넌트들을 정의하는 것은 너무 많은 작업량이다.

해결책

Spring 2.5 에서 제공되는 component scanning 을 이용한다.

component scanning

클래스패스에서부터 특정한 스트레오타입 어노테이션을 가진 컴포넌트를 탐지해서 인스턴스화한다.

  • @Component : 스프링이 관리하는 컴포넌트를 나타내는 기본 스테레오타입
  • @Repository : persistence layer 안에 있는 DAO 컴포넌트를 나타내는 스테레오타입
  • @Service : service layer 안에 있는 서비스 컴포넌트를 나타내는 스테레오타입
  • @Controller : presentation layer 에 있는 컨트롤러 컴포넌트를 나타내는 스테레오타입

컴포넌트 스캔 필터링하기

4가지 필터 표현을 제공한다.

  • annotation
  • assignable
  • regex
  • aspectj
댓글