The Spring Framework - Reference Documentation

Authors

Rod Johnson, Juergen Hoeller, Alef Arendsen, Colin Sampaleanu, Rob Harrop, Thomas Risberg, Darren Davison, Dmitriy Kopylenko, Mark Pollack, Thierry Templier, Erwin Vervaet, Portia Tung, Ben Hale, Adrian Colyer, John Lewis, Costin Leau, Rick Evans

2.0

Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.

Table of Contents

서문
1. 소개
1.1. 개요
1.2. 사용 시나리오
2. Spring 2.0에서 새로운 것
2.1. 소개
2.2. Inversion of Control (IoC) 컨테이너
2.2.1. 좀더 쉬운 XML설정
2.2.2. 새로운 bean scope
2.2.3. 확장가능한 XML작성
2.3. 관점(Aspect) 지향 프로그래밍 (AOP)
2.3.1. 좀더 쉬운 AOP XML설정
2.3.2. @AspectJ aspects 를 위한 지원
2.4. 미들 티어
2.4.1. XML내 선언적인 트랜잭션의 좀더 쉬운 설정법
2.4.2. JPA
2.4.3. 비동기 JMS
2.4.4. JDBC
2.5. Web 티어
2.5.1. Spring MVC를 위한 form태그 라이브러리
2.5.2. Spring내 기능위주의 디폴트
2.5.3. 포틀릿 프레임워크
2.6. 그외 모든것들
2.6.1. 동적(Dynamic) 언어 지원
2.6.2. JMX
2.6.3. 작업 스케줄링
2.6.4. Java 5 지원
2.7. Spring 2.0으로 이전하기
2.7.1. 변경사항
2.7.1.1. Jar 패키징
2.7.1.2. XML 설정
2.7.1.3. Deprecated된 클래스와 메소드
2.7.1.4. Apache OJB
2.7.1.5. iBatis
2.8. 업데이트된 샘플 애플리케이션
2.9. 향상된 문서
I. Core Technologies
3. IoC 컨테이너
3.1. 소개
3.2. 기초 - 컨테이너와 beans
3.2.1. 컨테이너
3.2.1.1. 설정 메타데이터
3.2.2. 컨테이너 인스턴스화하기
3.2.2.1. XML-기반 설정 메타데이터 조합하기
3.2.3. beans
3.2.3.1. bean 명명하기
3.2.3.2. bean 인스턴스화하기
3.2.4. 컨테이너 사용하기
3.3. 의존성
3.3.1. 의존성 삽입하기
3.3.1.1. Setter 삽입
3.3.1.2. 생성자 삽입
3.3.1.3. 몇몇 예제들
3.3.2. 생성자의 인자 분석
3.3.2.1. 생성자의 인자 타입 대응(match)
3.3.2.2. 생성자의 인자 인덱스
3.3.3. 상세화된 bean프라퍼티와 생성자의 인자
3.3.3.1. 순수값(원시, Strings, 등등)
3.3.3.2. 다른 bean에 대한 참조
3.3.3.3. 내부 bean
3.3.3.4. collection
3.3.3.5. null
3.3.3.6. XML-기반의 설정 메타데이터 간략화
3.3.3.7. 혼합된 프라퍼티 명
3.3.4. depends-on 사용하기
3.3.5. Lazily-instantiating beans
3.3.6. Autowiring 협력자
3.3.6.1. Excluding a bean from being available for autowiring
3.3.7. 의존성을 위한 체크
3.4. 메소드 삽입
3.4.1. 룩업(Lookup) 메소드 삽입
3.4.2. 임의의 메소드 교체
3.5. Bean scopes
3.5.1. The singleton scope
3.5.2. The prototype scope
3.5.3. The other scopes
3.5.3.1. Initial web configuration
3.5.3.2. The request scope
3.5.3.3. The session scope
3.5.3.4. The global session scope
3.5.3.5. Scoped beans as dependencies
3.5.4. Custom scopes
3.6. bean의 성질을 커스터마이징하기.
3.6.1. Lifecycle 인터페이스
3.6.1.1. 콜백 초기화하기
3.6.1.2. 콜백 파괴하기
3.6.2. 당신이 누구인지 알고 있다.(Knowing who you are)
3.6.2.1. BeanFactoryAware
3.6.2.2. BeanNameAware
3.7. Bean정의 상속
3.8. 컨테이너 확장 지점
3.8.1. BeanPostProcessors로 bean 커스터마이징하기
3.8.1.1. Example: Hello World, BeanPostProcessor-style
3.8.1.2. Example: The RequiredAnnotationBeanPostProcessor
3.8.2. Customizing configuration metadata with BeanFactoryPostProcessors
3.8.2.1. 예제: PropertyPlaceholderConfigurer
3.8.2.2. 예제: PropertyOverrideConfigurer
3.8.3. FactoryBeans를 사용하여 인스턴스화 로직을 사용자정의하기
3.9. ApplicationContext
3.9.1. MessageSources를 사용하여 국제화하기
3.9.2. 이벤트
3.9.3. 하위 레벨 자원(resource)에 대한 편리한 접근
3.9.4. 웹 애플리케이션을 위한 편리한 ApplicationContext 인스턴스화
3.10. Glue 코드와 좋지않은 싱글톤
3.10.1. 싱글톤 헬퍼 클래스 사용하기
4. 자원
4.1. 소개
4.2. Resource 인터페이스
4.3. 내장된 Resource구현물
4.3.1. UrlResource
4.3.2. ClassPathResource
4.3.3. FileSystemResource
4.3.4. ServletContextResource
4.3.5. InputStreamResource
4.3.6. ByteArrayResource
4.4. ResourceLoader 인터페이스
4.5. ResourceLoaderAware 인터페이스
4.6. 프라퍼티로 Resource 셋팅하기
4.7. 애플리케이션 컨텍스트와 Resource 경로들
4.7.1. 애플리케이션 컨텍스트 생성하기
4.7.1.1. ClassPathXmlApplicationContext 인스턴스 생성하기
4.7.2. 애플리케이션 컨텍스트 생성자 자원 경로내 와일드카드
4.7.2.1. Ant-스타일의 패턴
4.7.2.2. classpath*: 접두사
4.7.2.3. 와일드카드에 관련된 다른 노트
4.7.3. FileSystemResource 경고(caveats)
5. 유효성체크(Validation), 데이터-바인딩, BeanWrapper, 와 PropertyEditors
5.1. 소개
5.2. Spring의 Validator인터페이스를 사용하여 유효성 체크하기
5.3. error메시지를 위한 코드를 분석하기
5.4. Bean 조작(manipulation)과 BeanWrapper
5.4.1. Setting 과 getting 기본과 내포된 설정들
5.4.2. 내장 PropertyEditors 구현물
5.4.2.1. 추가적인 사용자정의 PropertyEditors 등록하기
6. Spring을 이용한 Aspect 지향 프로그래밍
6.1. 소개
6.1.1. AOP 개념
6.1.2. Spring AOP의 기능과 대상
6.1.3. Spring 내 AOP 프록시
6.2. @AspectJ 지원
6.2.1. @AspectJ 지원 가능하게 하기
6.2.2. aspect 선언하기
6.2.3. pointcut 선언하기
6.2.3.1. 지원되는 Pointcut 지시자(Designators)
6.2.3.2. pointcut 표현 조합하기
6.2.3.3. 공통 pointcut 정의 공유하기
6.2.3.4. 예제
6.2.4. advice 선언하기
6.2.4.1. Before advice
6.2.4.2. After 반환하는(returning) advice
6.2.4.3. After throwing advice
6.2.4.4. After (finally) advice
6.2.4.5. Around advice
6.2.4.6. Advice parameters
6.2.4.7. Advice ordering
6.2.5. Introductions
6.2.6. Aspect instantiation models
6.2.7. Example
6.3. Schema-based AOP support
6.3.1. Declaring an aspect
6.3.2. Declaring a pointcut
6.3.3. Declaring advice
6.3.3.1. Before advice
6.3.3.2. After returning advice
6.3.3.3. After throwing advice
6.3.3.4. After (finally) advice
6.3.3.5. Around advice
6.3.3.6. Advice parameters
6.3.3.7. Advice ordering
6.3.4. Introductions
6.3.5. Aspect instantiation models
6.3.6. Advisors
6.3.7. Example
6.4. Choosing which AOP declaration style to use
6.4.1. Spring AOP or full AspectJ?
6.4.2. @AspectJ or XML for Spring AOP?
6.5. Mixing aspect types
6.6. Proxying mechanisms
6.7. Programmatic creation of @AspectJ Proxies
6.8. Using AspectJ with Spring applications
6.8.1. Using AspectJ to dependency inject domain objects with Spring
6.8.1.1. Unit testing @Configurable objects
6.8.1.2. Working with multiple application contexts
6.8.2. Other Spring aspects for AspectJ
6.8.3. Configuring AspectJ aspects using Spring IoC
6.8.4. Using AspectJ Load-time weaving (LTW) with Spring applications
6.9. Further Resources
7. Spring AOP APIs
7.1. 소개
7.2. Spring에서의 Pointcut API
7.2.1. 개념
7.2.2. pointcut에서의 기능
7.2.3. AspectJ 표현 pointcuts
7.2.4. 편리한 pointcut 구현물
7.2.4.1. 정적인 pointcuts
7.2.4.2. 동적 pointcuts
7.2.5. Pointcut 슈퍼클래스
7.2.6. 사용자정의 pointcuts
7.3. Spring내 Advice API
7.3.1. Advice 생명주기
7.3.2. Spring내 Advice 타입
7.3.2.1. Interception around advice
7.3.2.2. Before advice
7.3.2.3. Throws advice
7.3.2.4. After Returning advice
7.3.2.5. Introduction advice
7.4. Spring내 Advisor API
7.5. AOP프록시를 생성하기 위한 ProxyFactoryBean사용하기
7.5.1. 기본
7.5.2. JavaBean 프라퍼티
7.5.3. JDK 와 CGLIB 기반의 프록시
7.5.4. 프록시 인터페이스
7.5.5. 프록시 클래스
7.5.6. 'global' advisor 사용하기
7.6. 간결한 프록시 정의
7.7. ProxyFactory로 프로그램으로 AOP프록시를 생성하기.
7.8. advised 객체 조작하기.
7.9. "autoproxy" 기능 사용하기
7.9.1. autoproxy bean정의
7.9.1.1. BeanNameAutoProxyCreator
7.9.1.2. DefaultAdvisorAutoProxyCreator
7.9.1.3. AbstractAdvisorAutoProxyCreator
7.9.2. 메터데이타-지향 자동 프록시 사용하기.
7.10. TargetSources 사용하기
7.10.1. 핫 스왑가능한 대상 소스
7.10.2. 풀링 대상 소스
7.10.3. 프로토 타입 대상 소스
7.10.4. ThreadLocal 대상 소스
7.11. 새로운 Advice 타입을 정의하기
7.12. 추가적인 자원
8. Testing
8.1. 소개
8.2. 단위 테스팅
8.3. 통합 테스팅
8.3.1. 컨텍스트 관리와 캐슁
8.3.2. 테스트 기능의 의존성 삽입
8.3.3. 트랜잭션 관리
8.3.4. 편리한 변수들
8.3.5. 예제
8.3.6. 통합 테스트 실행하기
8.4. 더 많은 자원
II. Middle Tier Data Access
9. 트랜잭션 관리
9.1. 소개
9.2. 동기
9.3. 핵심(key) 추상화
9.4. 트랜잭션으로 resource 동기화하기
9.4.1. 높은 레벨의 접근법
9.4.2. 낮은 레벨의 접근법
9.4.3. TransactionAwareDataSourceProxy
9.5. 선언적인 트랜잭션 관리
9.5.1. Spring의 선언적인 트랜잭션 구현물을 이해하기
9.5.2. 첫번째 예제
9.5.3. 롤백
9.5.4. 다른 bean에 다른 트랜잭션 성격을 가지는 의미를 설정하기
9.5.5. <tx:advice/> 셋팅
9.5.6. @Transactional 사용하기
9.5.6.1. @Transactional 셋팅
9.5.7. 트랜잭션 성격을 가지는 작업에 충고하기(advise)
9.5.8. AspectJ와 @Transactional 를 사용하기
9.6. 프로그램으로 처리하는 트랜잭션 관리
9.6.1. TransactionTemplate 사용하기
9.6.2. PlatformTransactionManager 사용하기
9.7. 프로그램으로 처리하는 것과 선언적인 트랜잭션 관리간의 선택하기
9.8. 특정 애플리케이션 서버에 대한 통합
9.8.1. BEA 웹로직
9.8.2. IBM 웹스피어
9.9. 공통적인 문제에 대한 해결법
9.9.1. 특정 DataSource를 위한 잘못된 트랜잭션 관리자 사용하기
9.10. 더 많은 자원
10. DAO support
10.1. 소개
10.2. 일관된 예외 구조
10.3. DAO지원을 위한 일관된 추상클래스
11. JDBC를 사용한 데이터 접근
11.1. 소개
11.1.1. 패키지 구조
11.2. 기본적인 JDBC처리와 에러 처리를 위한 JDBC Core클래스 사용하기
11.2.1. JdbcTemplate
11.2.2. NamedParameterJdbcTemplate
11.2.3. SimpleJdbcTemplate
11.2.4. DataSource
11.2.5. SQLExceptionTranslator
11.2.6. Statements 실행하기
11.2.7. 쿼리문 실행하기
11.2.8. 데이터베이스 수정하기
11.3. 데이터베이스 연결을 제어하기
11.3.1. DataSourceUtils
11.3.2. SmartDataSource
11.3.3. AbstractDataSource
11.3.4. SingleConnectionDataSource
11.3.5. DriverManagerDataSource
11.3.6. TransactionAwareDataSourceProxy
11.3.7. DataSourceTransactionManager
11.4. 자바 객체처럼 JDBC작업을 모델링 하기.
11.4.1. SqlQuery
11.4.2. MappingSqlQuery
11.4.3. SqlUpdate
11.4.4. StoredProcedure
11.4.5. SqlFunction
12. 객체 관계 맵핑(ORM) 데이터 접근
12.1. 소개
12.2. Hibernate
12.2.1. 자원 관리
12.2.2. Spring 애플리케이션 컨텍스트내에서 SessionFactory 셋업
12.2.3. HibernateTemplate
12.2.4. 콜백없이 Spring기반의 DAO를 구현하기
12.2.5. 명백한 Hibernate 3 API에 기초한 DAO구현하기
12.2.6. 프로그램의 트랜잭션 구분(Demarcation)
12.2.7. 선언적인 트랜잭션 구분
12.2.8. 트랜잭션 관리 전략
12.2.9. 컨테이너 자원 대 로컬 자원
12.2.10. 트랜잭션이나 DataSource에 대한 애플리케이션 서버의 가짜(spurious) 경고는 더이상 활성화되지 않는다.
12.3. JDO
12.3.1. PersistenceManagerFactory 셋업
12.3.2. JdoTemplate 과 JdoDaoSupport
12.3.3. 명백한 JDO API에 기반한 DAO 구현하기
12.3.4. 트랜잭션 관리
12.3.5. JdoDialect
12.4. Oracle TopLink
12.4.1. SessionFactory 추상화
12.4.2. TopLinkTemplate 과 TopLinkDaoSupport
12.4.3. 명백한 TopLink API에 기반하여 DAO구현하기
12.4.4. 트랜잭션 관리
12.5. iBATIS SQL Maps
12.5.1. 1.x and 2.x 사이의 개요와 차이점
12.5.2. iBATIS 1.x
12.5.2.1. SqlMap을 셋업하기
12.5.2.2. SqlMapTemplate 과 SqlMapDaoSupport 사용하기
12.5.3. iBATIS SQL Maps 2.x
12.5.3.1. SqlMapClient 셋업하기
12.5.3.2. SqlMapClientTemplate과 SqlMapClientDaoSupport 사용하기
12.5.3.3. 명백한 iBATIS API에 기반하여 DAO구현하기
12.6. JPA
12.6.1. Spring환경에서 JPA 셋업하기
12.6.1.1. LocalEntityManagerFactoryBean
12.6.1.2. LocalContainerEntityManagerFactoryBean
12.6.1.3. 다중 퍼시스턴스 유닛을 다루기.
12.6.2. JpaTemplate 과 JpaDaoSupport
12.6.3. 명백한 JPA에 기초한 DAO를 구현하기
12.6.4. 예외 번역
12.7. 트랜잭션 관리
12.8. JpaDialect
III. The Web
13. 웹 MVC framework
13.1. 소개
13.1.1. 다른 MVC구현물의 플러그인 가능성
13.1.2. Spring MVC의 특징
13.2. DispatcherServlet
13.3. 컨트롤러
13.3.1. AbstractController 와 WebContentGenerator
13.3.2. 간단한 다른 컨트롤러
13.3.3. MultiActionController
13.3.4. Command Controllers
13.4. Handler mappings
13.4.1. BeanNameUrlHandlerMapping
13.4.2. SimpleUrlHandlerMapping
13.4.3. 요청 가로채기 - HandlerInterceptors 인터페이스
13.5. view와 view결정하기
13.5.1. view를 결정하기 - ViewResolver 인터페이스
13.5.2. ViewResolvers 묶기(Chaining)
13.5.3. view로 redirect하기
13.5.3.1. RedirectView
13.5.3.2. redirect: 접두사
13.5.3.3. forward: 접두사
13.6. 로케일 사용하기.
13.6.1. AcceptHeaderLocaleResolver
13.6.2. CookieLocaleResolver
13.6.3. SessionLocaleResolver
13.6.4. LocaleChangeInterceptor
13.7. 테마(themes) 사용하기
13.7.1. 소개
13.7.2. 테마 정의하기
13.7.3. 테마 결정자(resolver)
13.8. Spring의 multipart (파일업로드) 지원
13.8.1. 소개
13.8.2. MultipartResolver 사용하기
13.8.3. 폼에서 파일업로드를 다루기.
13.9. Spring의 폼 태그 라이브러리 사용하기.
13.9.1. 설정
13.9.2. form 태그
13.9.3. input 태그
13.9.4. checkbox 태그
13.9.5. radiobutton 태그
13.9.6. password 태그
13.9.7. select 태그
13.9.8. option 태그
13.9.9. options 태그
13.9.10. textarea 태그
13.9.11. hidden 태그
13.9.12. errors 태그
13.10. 예외 다루기
13.11. 설정에 대한 규칙
13.11.1. 컨트롤러 - ControllerClassNameHandlerMapping
13.11.2. 모델 - ModelMap (ModelAndView)
13.11.3. 뷰(view) - RequestToViewNameTranslator
13.12. 더많은 자원
14. 통합 뷰 기술들
14.1. 소개
14.2. JSP & JSTL
14.2.1. 뷰 해결자(View resolvers)
14.2.2. 'Plain-old' JSPs 대(versus) JSTL
14.2.3. 추가적인 태그들을 쉽게 쓸수 있는 개발
14.3. Tiles
14.3.1. 의존물들(Dependencies)
14.3.2. Tiles를 통합하는 방법
14.3.2.1. InternalResourceViewResolver
14.3.2.2. ResourceBundleViewResolver
14.4. Velocity & FreeMarker
14.4.1. 의존물들(Dependencies)
14.4.2. 컨텍스트 설정(Context configuration)
14.4.3. 생성 템플릿들(Creating templates)
14.4.4. 진보한 구성(Advanced configuration)
14.4.4.1. velocity.properties
14.4.4.2. FreeMarker
14.4.5. 바인드(Bind) 지원과 폼(form) 핸들링
14.4.5.1. 바인드(bind) 매크로
14.4.5.2. 간단한 바인딩
14.4.5.3. 폼 input 생성 매크로
14.4.5.4. HTML회피를 오버라이드하고 XHTML호환 태그를 만든다.
14.5. XSLT
14.5.1. 나의 첫번째 단어
14.5.1.1. Bean 정의
14.5.1.2. 표준적인 MVC 컨트롤러 코드
14.5.1.3. 모델 데이터를 XML로 변환하기
14.5.1.4. view프라퍼티 정의하기
14.5.1.5. 문서 변형
14.5.2. 요약
14.6. 문서 views (PDF/Excel)
14.6.1. 소개
14.6.2. 설정 그리고 셋업
14.6.2.1. 문서 view정의
14.6.2.2. 컨트롤러 코드
14.6.2.3. Excel view를 위한 하위클래스 만들기
14.6.2.4. PDF view를 위한 하위클래스 만들기
14.7. JasperReports
14.7.1. 의존성
14.7.2. 설정
14.7.2.1. ViewResolver 설정하기
14.7.2.2. View 설정하기
14.7.2.3. 리포트 파일에 대해
14.7.2.4. JasperReportsMultiFormatView 사용하기
14.7.3. ModelAndView 활성화하기
14.7.4. 하위-리포트로 작동하기
14.7.4.1. 하위-리포트 파일 설정하기
14.7.4.2. 하위-리포트 데이터소스 설정하기
14.7.5. 전파자(Exporter) 파라미터 설정하기
15. 다른 웹 프레임워크들과의 통합
15.1. 소개
15.2. 공통 설정
15.3. JavaServer Faces
15.3.1. DelegatingVariableResolver
15.3.2. FacesContextUtils
15.4. Struts
15.4.1. ContextLoaderPlugin
15.4.1.1. DelegatingRequestProcessor
15.4.1.2. DelegatingActionProxy
15.4.2. ActionSupport 클래스들
15.5. Tapestry
15.5.1. Injecting Spring-managed beans
15.5.1.1. Tapestry페이지에 대한 Spring Bean 의존성 삽입
15.5.1.2. 컴포넌트 정의 파일
15.5.1.3. 추상 접근자(accessor) 추가하기
15.5.1.4. Tapestry 페이지에 Spring Beans 의존성 삽입하기 - Tapestry 4.0이상의 버전 스타일
15.6. WebWork
15.7. 추가적인 자원
16. 포틀릿(Portlet) 통합
16.1. 소개
16.1.1. Controllers - MVC내 C
16.1.2. Views - MVC내 V
16.1.3. web 범위의 bean
16.2. DispatcherPortlet
16.3. ViewRendererServlet
16.4. 컨트롤러
16.4.1. AbstractController 와 PortletContentGenerator
16.4.2. 다른 간단한 컨트롤러
16.4.3. Command 컨트롤러
16.4.4. PortletWrappingController
16.5. 핸들러 맵핑
16.5.1. PortletModeHandlerMapping
16.5.2. ParameterHandlerMapping
16.5.3. PortletModeParameterHandlerMapping
16.5.4. HandlerInterceptor 추가하기
16.5.5. HandlerInterceptorAdapter
16.5.6. ParameterMappingInterceptor
16.6. View와 View해석하기
16.7. Multipart (파일 업로드) 지원
16.7.1. PortletMultipartResolver 사용하기
16.7.2. 폼내 파일 업로드 다루기
16.8. 예외 다루기
16.9. 포틀릿 애플리케이션 개발
IV. Integration
17. Spring을 사용한 원격(Remoting)및 웹서비스
17.1. 소개
17.2. RMI를 사용한 서비스 드러내기
17.2.1. RmiServiceExporter를 사용하여 서비스 내보내기
17.2.2. 클라이언트에서 서비스 링크하기
17.3. HTTP를 통해 서비스를 원격으로 호출하기 위한 Hessian 이나 Burlap을 사용하기.
17.3.1. Hessian을 위해 DispatcherServlet을 묶기.
17.3.2. HessianServiceExporter를 사용하여 bean을 드러내기
17.3.3. 클라이언트의 서비스로 링크하기
17.3.4. Burlap 사용하기
17.3.5. Hessian 이나 Burlap을 통해 드러나는 서비스를 위한 HTTP 기본 인증 적용하기
17.4. HTTP호출자를 사용하여 서비스를 드러내기
17.4.1. 서비스 객체를 드러내기
17.4.2. 클라이언트에서 서비스 링크하기
17.5. 웹 서비스
17.5.1. JAX-RPC를 사용하여 서비스를 드러내기
17.5.2. 웹 서비스에 접근하기
17.5.3. Register Bean 맵핑
17.5.4. 자체적인 핸들러 등록하기
17.5.5. XFire를 사용하여 웹 서비스를 드러내기
17.6. 자동-탐지(Auto-detection)는 원격 인터페이스를 위해 구현되지 않는다.
17.7. 기술을 선택할때 고려사항.
18. Enterprise Java Bean (EJB) 통합
18.1. 소개
18.2. EJB에 접근하기
18.2.1. 개념
18.2.2. local SLSBs에 접근하기
18.2.3. remote SLSB에 접근하기
18.3. Spring의 편리한 EJB구현물 클래스를 사용하기.
19. JMS
19.1. 소개
19.2. Using Spring JMS
19.2.1. JmsTemplate
19.2.2. Connection Factory
19.2.3. 목적지(Destination) 관리
19.2.4. 메시지 리스너 컨테이너
19.2.4.1. SimpleMessageListenerContainer
19.2.4.2. DefaultMessageListenerContainer
19.2.4.3. ServerSessionMessageListenerContainer
19.2.5. 트랜잭션 관리
19.3. 메시지 보내기
19.3.1. 메시지 변환기(converter) 사용하기
19.3.2. SessionCallback 과 ProducerCallback
19.4. 메시지 받기
19.4.1. 동기적인 수령
19.4.2. 비동기적인 수령 - 메시지-기반 POJO
19.4.3. SessionAwareMessageListener 인터페이스
19.4.4. MessageListenerAdapter
19.4.5. 트랜잭션내 참여
20. JMX
20.1. 소개
20.2. JMX에 당신의 bean을 내보내기(Exporting)
20.2.1. MBeanServer 생성하기
20.2.2. 존재하는 MBeanServer를 재사용하기
20.2.3. 늦게 초기화되는(Lazy-Initialized) MBeans
20.2.4. MBean의 자동 등록
20.3. 등록 행위 제어하기
20.4. 당신 bean의 관리 인터페이스를 제어하기
20.4.1. MBeanInfoAssembler 인터페이스
20.4.2. 소스레벨 메타데이타(metadata) 사용하기
20.4.3. JDK 5.0 Annotations 사용하기
20.4.4. 소스레벨 메타데이타 타입들
20.4.5. AutodetectCapableMBeanInfoAssembler 인터페이스
20.4.6. 자바 인터페이스를 사용하여 관리 인터페이스 정의하기
20.4.7. MethodNameBasedMBeanInfoAssembler 사용하기
20.5. 당신의 bean을 위한 ObjectName 제어하기
20.5.1. Properties로 부터 ObjectName 읽기
20.5.2. MetadataNamingStrategy 사용하기
20.6. JSR-160 연결자(Connectors)
20.6.1. 서버측 연결자(Connectors)
20.6.2. 클라이언트측 연결자
20.6.3. Burlap/Hessian/SOAP 곳곳의 JMX
20.7. 프록시를 통해서 MBean에 접속하기
20.8. 통지
20.8.1. 통지를 위한 리스너 등록하기
20.8.2. 통지 발행하기(Publishing)
20.9. 더 많은 자원
21. JCA CCI
21.1. 소개
21.2. CCI 설정하기
21.2.1. 연결자 설정
21.2.2. Spring내 ConnectionFactory 설정
21.2.3. CCI connection 설정하기
21.2.4. 하나의 CCI connection 사용하기
21.3. Spring의 CCI 접근 지원 사용하기
21.3.1. 레코드 전환(Record conversion)
21.3.2. CciTemplate
21.3.3. DAO 지원
21.3.4. 자동화된 출력 레코드 생성
21.3.5. 개요
21.3.6. CCI Connection 과 Interaction을 직접 사용하기
21.3.7. CciTemplate 사용을 위한 예제
21.4. 작업(operation) 객체로 CCI접근 모델링하기
21.4.1. MappingRecordOperation
21.4.2. MappingCommAreaOperation
21.4.3. 자동 출력 레코드 작업
21.4.4. 개요
21.4.5. MappingRecordOperation 사용을 위한 예제
21.4.6. MappingCommAreaOperation 사용을 위한 예제
21.5. 트랜잭션
22. Spring 메일 추상 계층
22.1. 소개
22.2. Spring 메일 추상화 구조
22.3. Spring 메일 추상화 사용하기
22.3.1. 플러그인할 수 있는 MailSender 구현클래스들
22.4. JavaMail MimeMessageHelper 사용하기
22.4.1. 간단한 MimeMessage 를 생성하고 보내기
22.4.2. 첨부파일들과 inline 리소스들을 보내기
23. Spring을 사용한 스케줄링과 쓰레드 풀링
23.1. 소개
23.2. OpenSymphony Quartz 스케쥴러 사용하기
23.2.1. JobDetailBean 사용하기
23.2.2. MethodInvokingJobDetailFactoryBean 사용하기
23.2.3. triggers 와 SchedulerFactoryBean을 사용하여 jobs를 묶기
23.3. JDK Timer 지원 사용하기
23.3.1. 사용자정의 timers 생성하기
23.3.2. MethodInvokingTimerTaskFactoryBean 사용하기
23.3.3. 감싸기 : TimerFactoryBean을 사용하여 tasks를 세팅하기
23.4. Spring TaskExecutor 추상화
23.4.1. TaskExecutor 인터페이스
23.4.2. TaskExecutor를 사용하는 곳
23.4.3. TaskExecutor 타입들
23.4.4. TaskExecutor 사용하기
24. 동적 언어 지원
24.1. 소개
24.2. 첫번째 예제
24.3. 동적언어에 의해 지원되는 bean정의하기
24.3.1. 공통적인 개념
24.3.1.1. <lang:language/> 요소
24.3.1.2. 갱신가능한(Refreshable) beans
24.3.1.3. 즉시 처리되는(Inline-인라인) 동적언어 소스파일
24.3.2. 동적언어를 지원하는 bean의 컨텍스트내 생성자 삽입을 이해하기
24.4. JRuby beans
24.5. Groovy beans
24.6. BeanShell beans
24.7. 시나리오
24.7.1. 스크립트된 Spring MVC 컨트롤러
24.7.2. 스크립트된 Validators
24.8. 더 많은 자원
25. 어노테이션(annotation)과 소스 레벨 메타데이타 지원
25.1. 소개
25.2. Spring의 메타데이타 지원
25.3. 어노테이션
25.3.1. @Required
25.3.2. Spring내 다른 @Annotations
25.4. Jakarta Commons Attributes과 통합
25.5. 메타데이타와 Spring AOP 자동 프록시
25.5.1. 기초
25.5.2. 선언적인 트랜잭션 관리
25.5.3. 풀링(Pooling)
25.5.4. 사용자정의 메타데이타
25.6. MVC 웹티어 설정을 최소화하기 위한 속성 사용하기
25.7. 메타데이타 속성의 다른 사용
25.8. 추가적인 메타데이타 API를 위한 지원 추가하기
A. XML 스키마-기반 설정
A.1. 설정
A.2. XML 스키마-기반 설정
A.2.1. 스키마 참조하기
A.2.2. util 스키마
A.2.2.1. <util:constant/>
A.2.2.2. <util:property-path/>
A.2.2.3. <util:properties/>
A.2.2.4. <util:list/>
A.2.2.5. <util:map/>
A.2.2.6. <util:set/>
A.2.3. jee 스키마
A.2.3.1. <jee:jndi-lookup/> (simple)
A.2.3.2. <jee:jndi-lookup/> (하나의 JNDI환경셋팅으로)
A.2.3.3. <jee:jndi-lookup/> (다중 JNDI환경셋팅으로)
A.2.3.4. <jee:jndi-lookup/> (complex)
A.2.3.5. <jee:local-slsb/> (simple)
A.2.3.6. <jee:local-slsb/> (complex)
A.2.3.7. <jee:remote-slsb/>
A.2.4. lang 스키마
A.2.5. tx (트랜잭션) 스키마
A.2.6. aop 스키마
A.2.7. tool 스키마
A.2.8. beans 스키마
A.3. 당신의 IDE 셋업하기
A.3.1. eclipse 셋업하기
A.3.2. IntelliJ IDEA 셋업하기
A.3.3. 통합 이슈
A.3.3.1. Resin v.3 애플리케이션 서버의 XML파일 에러
B. 확장가능한 XML제작
B.1. 소개
B.2. 스키마 작성하기
B.3. NamespaceHandler코딩하기
B.4. BeanDefinitionParser 코딩하기
B.5. 핸들러와 스키마 등록하기
B.5.1. META-INF/spring.handlers
B.5.2. META-INF/spring.schemas
C. spring-beans_2_0.dtd
D. spring.tld
D.1. Introduction
D.2. The bind tag
D.3. The escapeBody tag
D.4. The hasBindErrors tag
D.5. The htmlEscape tag
D.6. The message tag
D.7. The nestedPath tag
D.8. The theme tag
D.9. The transform tag
E. spring-form.tld
E.1. Introduction
E.2. The checkbox tag
E.3. The errors tag
E.4. The form tag
E.5. The hidden tag
E.6. The input tag
E.7. The label tag
E.8. The option tag
E.9. The options tag
E.10. The password tag
E.11. The radiobutton tag
E.12. The select tag
E.13. The textarea tag