목차

1부    스프링 시작하기

01장    스프링 소개    
    스프링이란?    
    ?    의존성 주입을 넘어서
    ?    스프링과 Aspect-Oriented Programming
    ?    스프링에서의 데이터 접근
    ?    Java EE의 단순화 및 연동
    ?    잡(job) 스케줄링 지원
    ?    메일 지원
    ?    동적 언어
    ?    원격 지원
    ?    트랜잭션 관리
    ?    스프링 MVC 프레임워크
    ?    스프링 웹 플로
    ?    AJAX
    ?    국제화
    ?    예외 처리 단순화
    스프링 프로젝트    
    ?    스프링의 기원
    ?    스프링 커뮤니티
    ?    마이크로소프트 닷넷용 스프링
    ?    스프링 IDE
    ?    스프링 시큐리티(예전 Acegi)
    ?    스프링 대안책
    예제 코드    
                
02장    시작하기    
    스프링 프레임워크 가져오기    
    ?    CVS에서 스프링 체크아웃 하기
    ?    스프링 소스코드 빌드하기
    ?    스프링 배포판 검증하기
    ?    스프링 패키징
    ?    스프링 의존 라이브러리
    ?    스프링 예제 애플리케이션
    ?    스프링과 IDE 설정
    Hello, World    
    “Hello, World”에 스프링 적용하기    
    ?    의존성 주입
    ?    스프링의 영향력
        
03장    제어 역전 소개    
    IoC와 DI    
    IoC의 유형    
    ?    문맥에 따른 의존성 룩업
    ?    생성자 DI
    ?    세터 DI
    ?    주입 vs. 룩업
    ?    세터 주입 vs. 생성자 주입
    스프링의 IoC    
    스프링을 사용하는 DI    
    ?    빈과 빈팩토리
    ?    BeanFactory 구현체
    ?    XML 빈 정의
    ?    생성자 주입 사용하기
    ?    주입 매개변수
    ?    빈 작명 이해하기
    ?    빈 인스턴스화 모드
    ?    의존성 처리하기
    ?    빈을 자동으로 연결하기
    ?    의존성 확인하기
    ?    빈 상속
        
04장    기초를 넘어서    
    스프링이 애플리케이션 이식성에 주는 영향    
    빈 생명 주기 관리    
    ?    빈 생성에 끼어들기
    ?    빈 소멸에 끼어들기
    빈이 스프링을 인식하도록 만들기    
    ?    BeanNameAware 인터페이스 사용하기
    ?    BeanFactoryAware 인터페이스 사용하기
    매소드 주입 사용하기    
        룩업 메서드 주입
        메서드 교체
    FactoryBean 사용하기    
    ?    MessageDigestFactoryBean
    ?    FactoryBean에 직접 접근하기
    BeanFactoryPostProcessor    
        BeanFactoryPostProcessor 구현하기
    자바빈즈 PropertyEditor    
    ?    내장 프로퍼티에디터
    ?    커스텀 프로퍼티에디터 만들기
    BeanPostProcessor    
    ?    BeanPostProcessor 구현하기
    ?    빈포스트프로세서 사용 시기
    스프링 애플리케이션컨텍스트    
    ?    애플리케이션컨텍스트 구현체
    ?    ApplicationContextAware 사용하기
    ?    빈 초기화 제어하기
    ?    애노테이션-기반 설정 사용하기
    ?    MessageSource의 국제화
    ?    MessageSource를 독립 애플리케이션에서 사용하기
    ?    MessageSourceResolvable 인터페이스
    ?    애플리케이션 이벤트 사용하기
    ?    이벤트 사용에 대한 고려
    ?    리소스 접근
        
05장    스프링 AOP 소개    
    AOP 개념    
    AOP 종류    
    ?    정적인 AOP
    ?    동적인 AOP
    ?    AOP 종류 선택하기
    스프링에서 AOP    
    ?    AOP 진영
    ?    AOP로 "Hello, World"
    ?    스프링 AOP 아키텍처
    ?    ProxyFactory 클래스
    ?    스프링에서 어드바이스 만들기
    어드바이저와 포인트컷    
    ?    Pointcut 인터페이스
    ?    ComposablePointcut 사용하기
    ?    포인트컷팅 요약
    프록시에 관한 모든 것    
    ?    프록시 이해하기
    ?    JDK 동적 프록시 사용하기
    ?    CGLIB 프록시 사용하기
    ?    프록시 성능 비교하기
    ?    어떤 프록시를 사용해야 하는가?
        
06장    AOP 심화 학습    
    @AspectJ    
    @AspectJ 애스팩트를 보다 자세히    
    ?    포인트컷
    ?    포인트컷 표현식
    ?    포인트컷 표현식 살펴보기
    ?    XML에서 @포인트컷 사용하기
    ?    어드바이스 종류
    ?    인자 바인딩
    ?    Introduction
    ?    애스팩트 라이프 사이클
    AOP를 지원하는 프레임워크 서비스    
    ?    aop 네임스페이스를 사용하여 첫 번째 애스팩트 작성하기 
    ?    aop 네임스페이스에서 포인트컷
    ?    aop 네임스페이스 사용하여 어드바이스 만들기
    ?    aop 네임스페이스에서 Introduction
    어떤 스타일을 사용해야 하는가?    
    스프링 AOP 프록시 사용하기    
    ?    프록시의 영향
    AspectJ 연동    
    ?    첫 번째 애스팩트 작성하기
    ?    예제 애플리케이션 컴파일하기
    ?    AspectJ의 애스팩트 스코프
    로드-타임 위빙    
    ?    여러분의 첫 번째 로드-타임 위빙 예제
    ?    LoadTimeWeaver 룩업 전략 
    실용적인 AOP 사용처    
    ?    성능과 건강도 모니터링
        
07장    스프링 스키마와 네임스페이스    
    왜 새로운 설정인가?    
    스프링 2.5에 포함되어 있는 스키마    
    ?    beans 스키마
    ?    context 스키마
    ?    util 스키마
    ?    tx 스키마
    ?    aop 스키마
    ?    jee 스키마
    ?    lang 스키마
    스키마 무대 뒤편에    
    커스텀 스키마    
    IDE 설정    
        
08장    스프링 패턴    
    디렉터리 구조    
    ?    단순한 애플리케이션
    ?    복잡한 애플리케이션
    ?    패키지 만들기와 이름짓기
    디자인 패턴 소개    
    ?    인터페이스 기반 프로그래밍
    ?    생성 패턴
    ?    구조 패턴
    ?    행위 패턴
    ?    템플릿 메서드
    스프링 애플리케이션 패턴    
    ?    계층 구조 설계
    ?    고성능 페이징
    ?    다중 오류 보고
    ?    사용자 인터페이스 트랜잭션
    ?    백그라운드 프로세스
    ?    이메일 통지
    ?    에러 수집과 로깅
        
2부    데이터 접근

09장    JDBC 지원    
    JDBC 핵심 개념    
    ?    DriverManager와 Connections 사용하기
    ?    PreparedStatement 사용하기
    ?    CallableStatement 사용하기
    ?    다른 JDBC 개념들
    스프링 데이터 접근 지원에 대한 개념    
    JDBC 데이터 접근 지원    
    JdbcTemplate 사용하기    
    ?    JdbcTemplate.execute
    ?    JdbcTemplate.query와 그 친구들
    ?    JdbcTemplate.update
    ?    JdbcTemplate.batchUpdate
    RdbmsOperation 하위클래스    
    ?    sqlUpdate
    ?    BatchSqlUpdate
    ?    SqlCall과 StoredProcedure
    ?    SqlQuery와 그 하위클래스들
    ?    JdbcTemplate이냐 RdbmsOperation이냐?
    대형 이진 객체    
    JdbcDaoSupport    
    간단한 스프링 JDBC    
    ?    간단한 스프링 JDBC
    ?    SimpleJdbcCall
    ?    SimpleJdbcInsert
    ?    SimpleJdbcDaoSupport
        
10장    iBATIS 통합하기    
    iBATIS는 무엇인가?    
    ?    iBATIS 버전
    ?    인프라스트럭처와 설정
    매핑 파일    
    ?    sqlMap 파일
    ?    iBATIS와 스프링 설정하기
    데이터 질의    
    ?    간단한 질의
    ?    일대일(1:1) 질의
    ?    일대다(1:n) 질의
    ?    다대다(m:n) 질의
    데이터 갱신    
    데이터 삭제    
    데이터 삽입    
    iBATIS의 부족한 점은 무엇인가?    
    전반적인 성능    
        
11장    하이버네이트 지원    
    하이버네이트 기초    
    패키징    
    하이버네이트 지원 소개    
    ?    하이버네이트 세션 사용하기
    ?    HibernateDaoSupport 사용하기
    ?    HibernateTemplate과 Session 중에 어떤 것을 사용할지 결정하기
    엔터프라이즈 애플리케이션에서 하이버네이트 사용하기    
    ?    변경된 데이터 수정 방지하기
    ?    객체 동일성
    ?    트랜잭션 처리
    ?    로딩 지연
    ?    대규모 데이터 집합 다루기
    ?    큰 객체 다루기
    ?    하이버네이트와 다른 DAO 코드 조합하기
        
3부    엔터프라이즈 애플리케이션 컴포넌트

12장    스프링과 잡 스케줄링    
    JDK 타이머를 이용한 잡 스케줄링    
    ?    타이머 트리거 타입
    ?    간단한 잡 만들기
    ?    JDK 타이머 스케줄링에 대한 스프링 지원
    OpenSymphony 쿼츠를 사용한 잡 스케줄링    
        쿼츠 소개하기
        스프링의 쿼츠 지원
    잡 스케줄링 고려사항    
    ?    스케줄러 선택하기
    ?    Job 클래스에서 잡 로직을 분리해서 묶기
    ?    작업 실행과 스레드 풀링
        
13장    스프링의 메일 지원    
    스프링 메일 API의 구조    
    ?    스프링을 사용하여 메일 설정하기
    간단한 이메일 보내기    
    ?    프로그램상에서 이메일 구성하고 전송하기
    ?    선언적으로 이메일 구성하기
    ?    MIME 메시지의 작성과 전송
    ?    엔터프라이즈 수준의 이메일 처리에 대해 자세히 알아보기
        
14장    동적 언어    
    지원되는 언어에 대한 기초적인 내용    
    ?    빈쉘
    ?    그루비
    ?    제이루비
    동적언어를 스프링 빈으로 사용하기    
    ?    동적 언어 지원기능의 내부 동작 방식
    ?    동적 언어로 작성된 빈의 프록시 생성하기
    ?    성능
    갱신이 가능한 빈    
    빈쉘로 구현한 빈    
    제이루비로 구현한 빈    
    그루비로 구현한 빈    
    스프링 애플리케이션에서 동적 언어의 일반적인 사용방법    
        
4부    자바 EE 5

15장    스프링 리모팅 사용하기    
    스프링 리모팅 아키텍처    
    RMI    
    ?    임의의 서비스 노출시키기
    ?    프록시를 사용한 RMI 서비스 접근
    ?    CORBA 서비스 노출시키기
    ?    CORBA 서비스 접속하기
    JAX-RPC를 통한 웹 서비스    
    ?    아파치 Axis 소개
    ?    ServletEndpointSupport로 웹 서비스 만들기
    ?    프록시를 사용하여 RPC형식의 웹 서비스에 접근하기
    ?    Axis 서비스에서 자바빈 이용하기
    JAX-WS 웹 서비스 사용하기    
    ?    SimpleJaxWsServiceExporter를 사용하여 웹 서비스 노출하기
    ?    XFire를 이용하여 웹 서비스 노출하기
    ?    JAX-WS 웹 서비스에 접근하기
    ?    다른 클라이언트에서 자바 웹 서비스에 접근하기
    HTTP Invoker를 이용하여 웹 서비스 만들기    
    ?    간단한 서비스 노출시키기
    ?    프록시를 이용하여 HTTP Invoker 서비스에 접근하기
    ?    HTTP Invoker 서비스에서 임의 객체 사용하기
    ?    HTTP 기본 인증 사용하기
    리모팅 아키텍처 선정하기    
        
16장    트랜잭션 관리    
    스프링 트랜잭션의 추상화 레이어    
    트랜잭션의 프로퍼티    
    ?    TransactionDefinition 인터페이스
    ?    TransactionStatus 인터페이스 사용하기
    ?    PlatformTransactionManager의 구현
    트랜잭션 관리에 대한 예제 살펴보기    
    ?    트랜잭션이 적용되지 않은 코드
    프로그래밍을 통한 트랜잭션 관리    
    ?    TransactionTemplate 클래스 사용하기
    ?    프로그래밍을 통한 트랜잭션 관리에 대한 요약
    선언을 통한 트랜잭션 관리    
    ?    TransactionProxyFactoryBean 사용하기
    ?    트랜잭션 관리에 프록시를 사용하여 얻어지는 효과
    AOP 트랜잭션 관리    
    ?    애노테이션 기반의 AOP 트랜잭션 관리
    ?    XML AOP 트랜잭션 관리 사용하기
    여러 개의 트랜잭션 리소스에 트랜잭션 적용하기    
    트랜잭션 동기화를 직접 구현하기    
            
17장    스프링 MVC로 웹 애플리케이션 개발하기    
    MVC 아키텍처    
    스프링 MVC    
    ?    MVC 구현
    핸들러 맵핑하기    
    스프링 컨트롤러    
    ?    AbstractController
    ?    ParameterizableViewController
    ?    MultiActionController
    인터셉터    
    뷰, 로케일, 그리고 테마    
    ?    프로그래밍을 통해서 뷰 사용하기
    ?    ViewResolver 사용하기
    ?    현지화된 메세지를 사용하기
    ?    로케일 사용하기
    ?    테마 사용하기
    ?    폼 컨트롤러 사용하기
    ?    AbstractWizardFormController에 대해 알아보기
    ?    파일 업로드
    예외 처리하기    
    스프링과 다른 웹 기술들    
    ?    JSP 사용하기
    ?    벨로시티 사용하기
    ?    프리마커
    ?    XSLT 뷰
    ?    PDF 뷰 사용하기
    ?    엑셀 뷰 사용하기
    ?    타일즈와 스프링 통합하기
    ?    JasperReports
    설정을 대신하는 스프링 컨벤션    
    ?    Controller 컨벤션
    ?    MultiActionController 컨벤션
    ?    Model 컨벤션
    ?    View 컨벤션
    Controller 설정에 애노테이션 사용하기    
    ?    @Controller 애노테이션
    ?    @RequestMapping 애노테이션
    ?    @RequestParam 애노테이션
    ?    @ModelAttribute 애노테이션
    ?    애노테이션과 커맨드 컨트롤러 함께 사용하기
        
18장    스프링 웹 플로    
    스프링 웹 플로에 대한 소개    
    ?    핵심 개념
    ?    스프링 웹 플로 다운로드하기
    ?    스프링 웹 플로의 의존성
    Hello, Web Flow!    
    상태에 대해서 알아보기    
    ?    뷰 상태
    ?    디시젼 상태
    ?    종료 상태
    트랜지션 다루기    
    고급 수준의 개념    
    ?    표현 언어와 스코프
    ?    액션 구현하기
    ?    모델 데이터 바인딩하기
    ?    부분적으로 뷰를 렌더링하기
    ?    플로의 입력/출력 파라미터를 매핑하기
    ?    서브플로 사용하기
    스프링 웹 플로의 내부구조    
    ?    플로의 실행 구조
    ?    플로 실행자
    ?    플로 정의 레지스트리
    ?    플로 실행 저장소
    스프링 MVC와 통합하기    
    ?    플로 처리
    ?    뷰 결정하기
    스프링 보안모듈로 플로에 보안설정하기    
    ?    1단계: SecurityFlowExecutionListener 추가하기
    ?    2단계: 기본적인 사용자 인증과 권한 인증의 처리
    ?    3단계: 플로 정의에 보안 규칙 정의하기
    문제 해결 방법    
    ?    상태 정보가 제공되도록 내비게이션 제어하기
    ?    브라우저의 내비게이션 메뉴에 대한 지원과 중복 폼 전송
    플로 정의 테스트하기    
        
19장    스프링과 AJAX    
    DWR    
    Installing DWR    
    스프링에서 DWR 설정하기    
    완전한 예제    
    DWR 설정 테스트하기    
    완전한 예제 실행해보기    
    DWR 스크립트의 기본    
    ?    간단한 콜백 함수 사용하기
    ?    메타 데이터 객체 호출하기
    engine.js    
    ?    일괄 호출
    ?    호출 순서
    ?    오류와 경고 다루기
    util.js    
    DWR과 보안    
    DWR의 장점과 단점    
        
20장    스프링과 JMX    
    JMX 다시보기    
    빈 노출시키기    
    ?    MBeanExporter
    ?    MBeanServerFactoryBean
    ?    빈을 이미 존재하는 MBean 서버에 노출시키기
    ?    빈 등록 시 동작
    객체 이름 제어하기    
    관리 인터페이스 제어하기    
    ?    MBeanInfoAssembler 인터페이스
    ?    MethodNameBasedMBeanInfoAssembler 인터페이스
    ?    자바 인터페이스를 통해 관리 인터페이스 제어하기
    ?    소스 레벨 메타 데이터 사용하기
    스프링 JMX 원격 제어하기    
    ?    원격 MBean 노출시키기
    ?    원격 MBean에 접근하기
    ?    MBean 프록시하기
    스프링 JMX에서의 통지    
    ?    통지 감지기
    ?    통지 발행하기
        
21장    Spring에서 테스트하기    
    단위 테스트란?    
    단위 테스트    
    ?    웹 계층 단위 테스트
    통합 테스트    
    ?    AbstractSpringContextTests 사용하기
    ?    AbstractDependencyInjectionSpringContextTests 사용하기
    ?    AbstractTransactionalSpringContextTests 사용하기
    ?    AbstractAnnotationAwareTransactionalTests 사용하기
    ?    JNDI
    스프링 TestContext 프레임워크    
    ?    TestContext 프레임워크에서의 애플리케이션 컨텍스트와 의존성 주입
    ?    TestContext 프레임워크와 트랜잭션
    ?    지원 클래스
    테스트 커버리지    
        
22장    스프링 성능 튜닝    
    성능과 응답성    
    엔터프라이즈 애플리케이션 성능 문제 살펴보기    
    자바 EE 애플리케이션 성능 측정하기    
    ?    무엇을 측정할지 알아내기
    ?    필요한 데이터 셋 결정하기
    ?    데이터 접근 계층 개선하기
    ?    트랜잭션 관리 개선하기
    ?    원격 호출의 성능 제어
    ?    뷰 계층의 성능에 대한 이해
    캐시 사용하기    
    성능 테스트    
    애플리케이션의 건강과 성능 측정    
    성능 최적화에 관한 더 많은 자료