티스토리 뷰
(p.81)
(p.84)
(p.86)
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
댓글