목차 일부
PART 01 스프링의 기초
Chapter 01 스프링 프레임워크 소개 ... 24
1. 스프링이란 무엇인가? ... 25
2. 스프링 프레임워크 설치와 모듈 구성 ... 26
2.1 모듈 구성 ... 27
2.2 외부 라이브러리 ... 30
3. Dependency Injection과 스프...
더보기
목차 전체
PART 01 스프링의 기초
Chapter 01 스프링 프레임워크 소개 ... 24
1. 스프링이란 무엇인가? ... 25
2. 스프링 프레임워크 설치와 모듈 구성 ... 26
2.1 모듈 구성 ... 27
2.2 외부 라이브러리 ... 30
3. Dependency Injection과 스프링 프레임워크 ... 31
3.1 Dependency Injection ... 31
3.2 스프링에서의 DI ... 36
4. AOP와 스프링 ... 41
4.1 AOP 소개 ... 41
4.2 스프링에서의 AOP ... 43
Chapter 02 스프링 DI ... 49
1. 스프링 컨테이너 ... 49
1.1 BeanFactory 인터페이스 ... 50
1.2 ApplicationContext 인터페이스와 WebApplicationContext 인터페이스 ... 51
1.3 DTD와 XML 스키마 기반의 설정 파일 작성 ... 53
2. 빈(bean) 생성과 의존 관계 설정 ... 55
2.1 빈 생성 및 사용 ... 55
2.2 의존 관계 설정 ... 57
2.3 컬렉션 타입 프로퍼티 설정 ... 64
2.4 의존 관계 자동 설정 ... 73
2.5 부모 빈을 통한 설정 재사용 ... 78
3. 빈 객체 범위 ... 80
4. 라이프 사이클 ... 82
4.1 빈 객체의 라이프 사이클 ... 82
4.2 BeanNameaAware 인터페이스 ... 84
4.3 BeanFactoryAware 인터페이스와 ApplicationContextAware 인터페이스 ... 85
4.4 InitializingBean 인터페이스 ... 86
4.5 DisposableBean 인터페이스 ... 87
4.6 커스텀 초기화 및 소멸 메서드 ... 88
5. 외부 설정 프로퍼티 ... 89
6. MessageSource를 이용한 텍스트 메시지 처리 ... 91
6.1 빈 객체에서 메시지 이용하기 ... 94
7. 스프링 컨텍스트 이벤트 ... 95
8. 어노테이션을 이용한 설정 ... 97
8.1 Required 어노테이션을 이용한 필수 프로퍼티 검사 ... 98
8.2 Autowired 어노테이션을 이용한 자동 설정 ... 99
8.3 Resource 어노테이션을 이용한 프로퍼티 설정 ... 103
8.4 PostConstruct 어노테이션 및 PreDestroy 어노테이션과 라이프 사이클 ... 104
9. 빈 객체 스캔 ... 105
9.1 어노테이션을 이용한 자동 스캔 ... 105
9.2 자동 검색된 빈의 이름과 범위 ... 106
9.3 스캔 대상 클래스 범위 지정하기 ... 107
Chapter 03 스프링 AOP ... 109
1. AOP 소개 ... 109
1.1 AOP 용어 ... 110
1.2 세 가지 Weaving 방식 ... 111
2. 스프링에서의 AOP ... 112
2.1 프록시를 이용한 AOP 구현 ... 113
3. 스프링 API를 이용한 AOP ... 114
3.1 Advice 작성 ... 115
3.2 Pointcut 및 Advisor 설정 ... 121
3.3 ProxyFactoryBean을 이용한 Advice 적용 ... 125
3.4 DefaultAdvisorAutoProxyCreator를 이용한 자동 프록시 생성 ... 129
4. POJO 클래스를 이용한 AOP ... 131
4.1 XML 스키마를 이용한 AOP 설정 ... 132
4.2 POJO 기반의 Advice 작성 ... 135
4.3 스프링 API를 이용한 Advice 설정 ... 141
5. Aspect 어노테이션을 이용한 AOP ... 142
6. AspectJ의 Pointcut 표현식 ... 145
6.1 프록시 구현 방식에 따른 execution 적용 차이 ... 147
PART 02 스프링 MVC
Chapter 04 스프링 MVC를 이용한 웹 요청 처리 ... 150
1. 스프링 MVC의 주요 구성 요소 및 처리 흐름 ... 151
2. 스프링 MVC Hello World ... 152
2.1 단계1, DispatcherServlet 설정 및 스프링 컨텍스트 설정 ... 153
2.2 단계2, 설정 파일에 HandlerMapping 설정 추가 ... 154
2.3 단계3, 컨트롤러 구현 및 설정 ... 154
2.4 단계4, 설정 파일에 ViewResolver 설정 추가 ... 156
2.5 단계5, 뷰 코드 구현 ... 156
2.6 실행 흐름 정리 ... 158
3. DispatcherServlet 설정과 ApplicationContext의 관계 ... 159
3.1 DispatcherServlet 설정 ... 159
3.2 웹 어플리케이션을 위한 ApplicationContext 설정 ... 160
4. 캐릭터 인코딩 처리를 위한 필터 설정 ... 163
5. 웹 요청과 컨트롤러 매핑:HandlerMapping ... 164
5.1 AbstractUrlHandlerMapping 클래스와 서블릿 URL ... 164
5.2 BeanNameUrlHandlerMapping을 이용한 컨트롤러 매핑 ... 167
5.3 SimpleUrlHandlerMapping을 이용한 컨트롤러 매핑 ... 169
5.4 다수의 HandlerMapping 동시 설정 ... 170
6. 컨트롤러 구현 ... 171
6.1 컨트롤러의 종류 ... 172
6.2 AbstractController를 이용한 컨트롤러 구현 ... 173
6.3 AbstractCommandController를 이용한 파라미터 처리 ... 175
6.4 SimpleFormController를 이용한 폼 처리 ... 178
6.5 formBackingObject () 메서드를 이용한 커맨드 객체 기본 값 처리 ... 185
6.6 SessionForm 프로퍼티와 HttpSession을 이용한 커맨드 객체 저장 ... 186
6.7 AbstractWizardFormController를 이용한 단계별 입력 폼 처리 ... 188
6.8 MultiActionController를 이용한 컨트롤러 구현 ... 196
6.9 ParameterizableViewController와 UrlFilenameView Controller를 이용한 정적 뷰 매핑 ... 201
6.10 ModelAndView 클래스 ... 202
6.11 뷰 이름을 지정하지 않는 경우의 처리 ... 205
7. 입력 값 검증 및 BindException 클래스 ... 205
7.1 Validator를 이용한 값 검증 ... 206
7.2 Errors 인터페이스와 BindException 클래스 ... 211
7.3 DefaultMessageCodesResolver와 에러 메시지 ... 215
8. 파일 업로드(multipart/form-Data) 처리 ... 219
9. 어노테이션을 이용한 컨트롤러 구현 ... 223
9.1 어노테이션 지원을 위한 HandlerMapping과 HandlerAdapter 설정 ... 223
9.2 Controller 어노테이션을 이용한 컨트롤러 작성 ... 224
9.3 RequestMapping 어노테이션을 이용한 요청 매핑 설정 ... 226
9.4 컨트롤러 메서드의 파라미터 타입 ... 227
9.5 컨트롤러 메서드의 리턴 타입 ... 230
9.6 ModelAttribute 어노테이션을 이용한 모델 데이터 처리 ... 231
9.7 SessionAttributes 어노테이션과 SessionStatus를 이용한 세션 사용 ... 233
9.8 InitBinder 어노테이션을 이용한 데이터 바인딩 설정 ... 234
10. HandlerInterceptor를 통한 요청 가로채기 ... 235
10.1 HandlerInterceptor 인터페이스의 구현 ... 236
10.2 HandlerMapping에 HandlerInterceptor 설정하기 ... 236
10.3 HandlerInterceptor의 실행 순서 ... 237
11. 예외 처리 ... 238
Chapter 05 뷰 영역 구현 ... 240
1. ViewResolver 설정 ... 241
1.1 ViewResolver 인터페이스 ... 242
1.2 View 객체 ... 242
1.3 InternalResourceViewResolver 설정 ... 243
1.4 BeanNameViewResolver 설정 ... 244
1.5 XmlViewResolver 설정 ... 245
1.6 ResourceBundleViewResolver 설정 ... 245
1.7 다수의 ViewResolver 설정하기 ... 246
2. HTML 특수 문자 처리 방식 설정 ... 247
3. JSP를 이용한 뷰 구현 ... 248
3.1 스프링이 제공하는 커스텀 태그 ... 248
3.2 메시지 출력을 위한〈spring:message〉 커스텀 태그 ... 249
3.3 스프링이 제공하는 폼 관련 커스텀 태그 ... 251
3.4 스프링이 제공하는 에러 관련 커스텀 태그 ... 263
3.5 〈spring:htmlEscape〉커스텀 태그와 htmlEscape 속성 ... 264
4. Tiles 연동을 이용한 레이아웃 템플릿 처리 ... 264
4.1 Tiles 2 연동 ... 265
4.2 Tiles 1 연동 ... 267
5. Velocity를 이용한 뷰 구현 ... 269
5.1 VelocityViewResolver와 VelocityConfigurer를 이용한 Velocity 연동 ... 270
5.2 스프링이 제공하는 Velocity 매크로 ... 273
5.3 VelocityLayoutViewResolver를 이용한 Velocity 레이아웃 템플릿 사용 ... 282
6. HTML 이외의 뷰 구현 ... 286
6.1 파일 다운로드 구현을 위한 커스텀 View ... 286
6.2 AbstractExcelView 클래스를 이용한 엑셀 다운로드 구현 ... 289
6.3 AbstractPdfView 클래스를 이용한 PDF 다운로드 구현 ... 292
7. Locale 처리 ... 294
7.1 LocaleResolver 인터페이스 ... 294
7.2 LocaleResolver의 종류 ... 295
7.3 LocaleResolver를 이용한 Locale 변경 ... 297
7.4 LocaleChangeInterceptor를 이용한 Locale 변경 ... 298
PART 03 데이터베이스 연동과 엔터프라이즈 서비스
Chapter 06 데이터베이스 연동 지원 ... 302
1. 스프링의 데이터베이스 연동 지원 ... 302
1.1 데이터베이스 연동을 위한 템플릿 클래스 ... 303
1.2 DAO 클래스를 위한 DaOSupport 클래스 ... 305
1.3 스프링의 예외 지원 ... 305
2. DataSource 설정 ... 307
2.1 커넥션 풀을 이용한 DataSource 설정 ... 307
2.2 JNDI를 이용한 DataSource 설정 ... 308
2.3 DriverManager를 이용한 DataSource 설정 ... 310
2.4 DataSource로부터 Connection 구하기 ... 310
3. 스프링의 JDBC 지원 ... 311
3.1 JdbcTemplate 클래스를 이용한 JDBC 프로그래밍 ... 313
3.2 NamedParameterJdbcTemplate 클래스를 이용한 JDBC 프로그래밍 ... 318
3.3 SimpleJdbcTemplate 클래스를 이용한 JDBC 프로그래밍 ... 320
3.4 DaoSupport 클래스를 이용한 JDBC 기반의 DAO 구현 ... 321
4. 스프링의 IBATIS 연동 지원 ... 323
4.1 SqlMapClient를 위한 스프링 설정 ... 324
4.2 SqlMapClientTemplate을 이용한 DAO 구현 ... 325
4.3 SqlMapClientDaoSupport 클래스를 이용한 DAO 구현 ... 327
5. 스프링의 하이버네이트 연동 지원 ... 328
5.1 SessionFactory를 위한 스프링 설정 ... 329
5.2 HibernateTemplate을 이용한 DAO 구현 ... 330
5.3 HibernateDaoSupport 클래스를 이용한 DAO 구현 ... 334
5.4 SessionFactory를 직접 이용한 구현 ... 335
6. 스프링의 JPA 연동 지원 ... 335
6.1 EntityManagerFactory를 위한 스프링 설정 ... 336
6.2 JpaTemplate를 이용한 DAO 구현 ... 340
6.3 JpaDaoSupport 클래스를 이용한 DAO 구현 ... 342
6.4 JPA 연동을 위한 LoadTimeWeaver 설정 ... 343
Chapter 07 스프링의 트랜잭션 관리 ... 346
1. 트랜잭션이란 ... 347
1.1 ACID ... 347
2. 스프링의 트랜잭션 지원 ... 348
2.1 스프링의 PlatformTransactionManager 설정 ... 348
2.2 JDBC 기반 트랜잭션 관리자 설정 ... 350
2.3 하이버네이트 트랜잭션 관리자 설정 ... 350
2.4 JPA 트랜잭션 관리자 설정 ... 351
2.5 JTA 트랜잭션 관리자 설정 ... 351
3. TransactionTemplate을 이용한 트랜잭션 처리 ... 352
4. 선언적 트랜잭션 처리 ... 356
4.1 〈tx:advice〉태그를 이용한 트랜잭션 처리 ... 356
4.2 TransactionProxyFactoryBean을 이용한 트랜잭션 처리 ... 360
4.3 어노테이션 기반 트랜잭션 설정 ... 361
5. JOTM을 이용한 분산 트랜잭션 처리 ... 362
Chapter 08 엔터프라이즈 서비스 ... 365
1. 스프링을 이용한 메일 발송 ... 365
1.1 MailSender 설정 ... 366
1.2 SimpleMailMessage를 이용한 메일 메시지 생성 ... 367
1.3 Java Mail API의 MimeMessage를 이용한 메일 메시지 생성 ... 370
1.4 MimeMessageHelper를 이용한 메일 메시지 생성 및 파일 첨부 ... 371
2. Quartz를 이용한 스케줄링 처리 ... 373
2.1 작업을 수행할 클래스 생성 ... 374
2.2 주기적으로 실행될 JobDetailBean 설정 ... 375
2.3 TriggerBean을 이용한 스케줄링 설정 ... 375
2.4 SchedulerFactoryBean 클래스로 TriggerBean 시작 ... 377
3. JMS를 이용한 메시징 ... 377
3.1 JMS 연동을 위한 ConnectionFactory 및 메시지 목적지 설정 ... 378
3.2 JmsTemplate 클래스를 이용한 메시지 송수신 ... 379
3.3 MessageConverter를 이용한 Message와 객체 매핑 처리 ... 382
3.4 JmsGatewaySupport 클래스를 이용한 JMS 연동 클래스 구현하기 ... 385
3.5 POJO 기반의 Message-Driven 빈 ... 386
3.6 JMS 트랜잭션 처리 ... 391
4. JMX 연동 지원 ... 395
4.1 스프링 빈을 MBean으로 등록하기 ... 395
4.2 MBeanServer 설정 ... 398
4.3 MBean 인터페이스 결정 ... 399
4.4 MBeanServer 원격으로 제공 ... 407
4.5 원격지 MBeanServer 접근 및 사용 ... 408
PART 04 테스트
Chapter 09 테스트 지원 ... 414
1. 스프링 MVC 컨트롤러 단위 테스트 ... 414
1.1 MockHttpServletRequest 객체를 이용한 컨트롤러 테스트 ... 415
1.2 ModelAndView 테스트 기능을 제공하는 AbstractModelAndViewTests 클래스 ... 420
2. Unit 3.8에서의 스프링 통합 테스트 ... 422
2.1 스프링 통합 테스트 ... 424
2.2 데이터베이스 연동 테스트의 트랜잭션 처리 ... 427
2.3 AbstractTransactionalDataSourceSpringContextTests를 이용한 테스트 데이터 초기화 ... 431
2.4 스프링 컨텍스트 리로딩 설정 ... 432
3. JUnit 4에서의 스프링 통합 테스트 ... 433
3.1 SpringJUnit4ClassRunner를 사용한 JUnit 4 기반 테스트 ... 434
3.2 트랜잭션 처리를 위한 설정 ... 435
3.3 스프링 컨텍스트 참조 및 컨텍스트 리로딩 처리 ... 437
3.4 AbstractTransactionalJUnit4SpringContextTests를 이용한 데이터 초기화 구현 ... 439
PART 05 부록
Appendix A XML 스키마 확장 ... 442
1. XML 스키마 작성하기 ... 443
2. NamespaceHandler 구현 클래스 작성하기 ... 445
3. BeanDefinitionParser 구현 클래스 작성하기 ... 446
4. 스프링에 스키마 및 핸들러 등록하기 ... 448
4.1 META-INF/spring.handlers에 NamespaceHandler 명시하기 ... 449
4.2 META-INF/spring.schemas에 스키마 URL 명시하기 ... 449
5. 개발한 커스텀 태그 사용하기 ... 450
Appendix B 스프링 프레임워크 소개 ... 451
Appendix C DWR 2와 스프링 MVC 연동 ... 456
Appendix D 참고 자료 ... 460
Index(찾아보기) ... 462
더보기 닫기