《精通Spring 深入Java EE开发核心技术》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:罗时飞编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2008
  • ISBN:9787121072987
  • 页数:521 页
图书介绍:本书是关于Spring 2.5的权威教程,是Java/Java EE开发者必备的参考书。本书详尽系统地介绍了Java EE的基础知识、Spring 2.5的各种功能,以及Spring 2.5的高级使用技巧和最佳实践。全书共分为6部分:第1部分综述,主要围绕Java EE 5、Spring展开;第2部分介绍Spring 2.5核心技术,主要围绕Spring元框架进行阐述;第3部分介绍DAO层集成技术,主要围绕JDBC、Hibernate和JPA等持久化技术展开论述,针对Spring使能应用的事务管理和集成测试,也进行了相关介绍;第4部分介绍Java EE服务及技术的集成,主要围绕企业应用中使用的各种Java EE服务及技术展开论述;第5部分介绍Spring 2.5高级特性,主要从忘却的Spring高级话题和Spring最佳实践角度给出论述;附录A完整地介绍了Spring 2.5支持的各种命名空间及其中的所有元素。全书理论与实践并重,通过大量的实例帮助读者尽快掌握Spring 2.5的使用技巧,从而提高本书的参考、阅读价值。

第1篇 综述 3

第1章 JavaEE5 3

1.1JavaEE5引入的新特性 3

1.2进入EJB3.0时代 6

1.3JavaEE开发模型的局限性 8

1.4小结 10

第2章 步入Spring2.5 11

2.1挑战JavaEE5开发模型 11

2.1.1轻量级开发模型 12

2.1.2倡导敏捷开发 15

2.1.3Spring2.5的架构价值 16

2.2有所为和有所不为 18

2.2.1Spring2.5提供的功能 18

2.2.2排除在外 20

2.3Spring2.5时代的到来 21

2.4小结 22

第3章 获得Spring2.5发布版和源码 23

3.1获得Spring2.5持续发布版 23

3.2获得持续更新的Spring项目源码 25

3.3小结 26

第4章 启动Spring2.5使能项目 27

4.1开发平台的搭建 27

4.1.1JDK的安装及设置 27

4.1.2选用EclipseIDE和WTP 28

4.1.3借助插件调试Web应用 28

4.1.4获取及安装SpringIDE 30

4.2SpringIDE的使用 30

4.3小结 34

第2篇 Spring2.5核心技术 37

第5章 控制反转容器 37

5.1有关DI容器的背景知识 37

5.2BeanFactory和ApplicationContext 38

5.3宿主DI容器配置元数据的不同方式 39

5.3.1基于XML的DI容器配置元数据 39

5.3.2基于注解的DI容器配置元数据 42

5.4基于泛型访问DI容器 43

5.5支持的不同依赖注入类型 44

5.5.1设值注入 44

5.5.2构建器注入 45

5.5.3属性注入 47

5.5.4方法注入 48

5.6Autowiring策略 52

5.6.1autowire属性 52

5.6.2〈bean/〉元素的dependency-check属性 54

5.6.3@Required注解 55

5.6.4@Autowired注解 56

5.6.5细粒度控制Autowiring策略 58

5.6.6借用〈context:annotation-config/〉元素 61

5.7善待depends-on属性 61

5.8抽象和子Bean定义 63

5.9别名(Alias) 64

5.10外在化应用参数的配置 65

5.10.1〈context:property-placeholder/〉元素 65

5.10.2〈context:property-override/〉元素 66

5.11受管Bean的作用范围 67

5.11.1单例和原型 67

5.11.2仅仅适合于Web环境的三种作用范围 69

5.12在Web应用中使用DI容器 72

5.12.1往Web应用中加载DI容器 73

5.12.2复合多个配置文件 74

5.12.3于Web应用中操控DI容器 75

5.12.4国际化和本地化消息资源 76

5.13探索〈util/〉命名空间 78

5.13.1〈util:constant/〉元素 78

5.13.2〈util:property-path/〉元素 79

5.13.3〈util:properties/〉元素 80

5.13.4〈util:list/〉元素 81

5.13.5〈util:map/〉元素 82

5.13.6〈util:set/〉元素 84

5.14使用〈p/〉命名空间 85

5.15操控资源 86

5.15.1内置的Resource继承链 86

5.15.2借助DI容器访问各种资源 88

5.15.3妙用classpath*前缀 89

5.16回调接口集合及其触发I顺序 89

5.16.1BeanNameAware回调接口 89

5.16.2BeanClassLoaderAware回调接口 90

5.16.3BeanFactoryAware回调接口 90

5.16.4ResourceLoaderAware回调接口 91

5.16.5ApplicationEventPublisherAware回调接口 91

5.16.6MessageSourceAware回调接口 91

5.16.7ApplicationContextAware回调接口 92

5.16.8@PostConstruct注解 92

5.16.9InitializingBean回调接口 92

5.16.10〈bean/〉元素的init-method属性 92

5.16.11@PreDestroy注解 93

5.16.12DisposableBean回调接口 93

5.16.13〈bean/〉元素的destroy-method属性 93

5.17小结 94

第6章 面向切面编程 95

6.1AOP背景知识 96

6.2AspectJ6介绍 97

6.2.1AspectJ的安装及使用 98

6.2.2Before装备 104

6.2.3AfterReturning装备 106

6.2.4AfterThrowing装备 108

6.2.5After装备 110

6.2.6Around装备 110

6.2.7引入(Introduction) 112

6.3SpringAOP的基本概念 115

6.4SpringAOP的老式用法 118

6.4.1Before装备 119

6.4.2基于ProxyFactoryBean的手工代理 121

6.4.3AfterRetuming装备 123

6.4.4AfterThrowing装备 125

6.4.5Around装备 126

6.4.6Introduction引入 129

6.4.7使用自动代理特性 129

6.4.8切换代理机制 131

6.4.9基于ProxyFactory的编程代理 132

6.5基于@AspectJ的SpringAOP 132

6.5.1声明切面、pointcut和装备 133

6.5.2各种装备的使用 136

6.5.3切换代理机制 139

6.5.4控制各装备的触发顺序 139

6.5.5pointcut表达语言 140

6.6基于〈aop:config/〉元素的AOP 144

6.6.1声明切面、pointcut和装备 145

6.6.2各种装备的使用 146

6.6.3〈aop:advisor/〉元素 150

6.6.4切换代理机制 150

6.7借用AspectJ6进行领域对象的DI操作 151

6.7.1直接使用AnnotationBean-ConfigurerAspect切面 151

6.7.2@Configurable注解 154

6.7.3借助aop.xml拉制启用的特定切面 156

6.7.4〈aop:include/〉元素 156

6.7.5〈context:spring-configured/〉元素 157

6.7.6借用〈context:load-time-weaver/〉元素 157

6.8小结 158

第3篇 DAO层集成技术 163

第7章 DAO抽象支持 163

7.1背景 163

7.2DAO集成支持 165

7.2.1DataAccessException异常体系 166

7.2.2DaoSupport继承链 167

7.2.3DataAccessUtils实用类 168

7.3小结 169

第8章 JDBC集成 171

8.1背景知识及示例 171

8.2Spring对JDBC提供的支持 176

8.3运行JDBC版PetClinic实例 177

8.4JdbcTemplate及相应的支持类 178

8.4.1JdbcTemplate核心类 179

8.4.2JdbcDaoSupport支持类 187

8.5NamedParameterJdbcTemplate及相应的支持类 188

8.5.1NamedParameterJdbcTemplate模板类 188

8.5.2NamedParameterJdbcDao-Support支持类 190

8.6SimpleJdbcTemplate及相应的支持类 191

8.6.1SimpleJdbcTemplate模板类 191

8.6.2SimpleJdbcDaoSupport支持类 192

8.6.3SimpleJdbcInsert辅助类 193

8.6.4基于JDBC的PetClinic综合示例分析 195

8.7内置的DataSource继承链 197

8.7.1用于测试目的的DriverManagerDataSource 198

8.7.2用于测试目的的SimpleDriverDataSource 198

8.7.3用于测试目的的Single-ConnectionDataSource 198

8.7.4ApacheDBCP数据源 199

8.7.5JavaEE容器内置的数据源 199

8.7.6LazyConnectionDataSource-Proxy数据源 199

8.7.7TransactionAwareDataSource-Proxy数据源 200

8.7.8UserCredentialsDataSource-Adapter数据源 201

8.7.9IsolationLevelDataSource-Adapter数据源 202

8.7.10WebSphereDataSource-Adapter数据源 202

8.7.11IsolationLevelDataSource-Router数据源 202

8.8将JDBC操作建模成Java对象 203

8.8.1SqlUpdate辅助类 204

8.8.2UpdatableSqlQuery辅助类 205

8.8.3MappingSqlQuery辅助类 206

8.8.4SqlFunction辅助类 206

8.9与存储过程交互 207

8.9.1JdbcTemplate针对存储过程提供的支持 208

8.9.2StoredProcedure辅助类 209

8.9.3SimpleJdbcCall辅助类 209

8.10处理大批量数据 210

8.10.1JdbcTemplate内置的batchUpdate()方法 210

8.10.2SimpleJdbcTemplate内置的batchUpdateQ方法 213

8.10.3BatchSqlUpdate辅助类 214

8.11基于JDBC的LOB集成支持 216

8.11.1运行及分析imagedb示例应用 216

8.11.2NativeJdbcExtractor继承链 217

8.11.3操作LOB字段 218

8.12如何获得和生成主键 221

8.12.1KeyHolder及GeneratedKey-Holder实现者 221

8.12.2DataFieldMaxValue-Incrementer继承链 222

8.13对行集的支持 224

8.13.1JdbcTemplate内置的queryForRowSet()方法集合 224

8.13.2NamedParameterJdbcTemplate内置的queryForRowSet()方法集合 224

8.14JDBC最佳实践 225

8.15小结 226

第9章 事务集成 227

9.1背景知识及示例 228

9.2Spring对事务提供的支持 230

9.3Spring眼中的事务管理策略 231

9.3.1事务定义 231

9.3.2各种PlatformTransaction-Manager实现 236

9.4编程式事务 238

9.4.1TransactionTemplate及相关回调接口 238

9.4.2使用@Transactional注解和〈tx:annotation-driven/〉元素 241

9.4.3拥抱EJB3.0引入的@TransactionAttribute注解 245

9.5声明式事务 245

9.5.1TransactionProxyFactoryBean辅助类 245

9.5.2〈tx:advice/〉元素 247

9.6在AspectJ6应用中使用@Transactional 248

9.6.1直接使用Annotation-TransactionAspect切面 248

9.6.2借用〈tx:annotation-driven/〉元素 251

9.6.3借用〈context:load-time-weaver/〉元素 251

9.7事务集成高级特性 252

9.7.1JavaEE应用服务器的事务集成 252

9.7.2〈tx:jta-transaction-manager/〉元素 253

9.7.3选择合适的事务策略 254

9.8小结 254

第10章 单元和集成测试 257

10.1背景知识及示例 257

10.2Spring对集成测试的支持 259

10.2.1ReflectionTestUtils实用类 259

10.2.2运行PetClinic中的集成测试类 260

10.3遗留JUnit3.8集成测试支持 261

10.3.1AbstractSingleSpringContext-Tests支持类 261

10.3.2AbstractDependencylnjection-SpringContextTests支持类 263

10.3.3AbstractTransactionalSpring-ContextTests支持类 265

10.3.4AbstractTransactionalData-SourceSpringContextTests支持类 267

10.3.5AbstractAnnotationAware-TransactionalTests支持类 270

10.4新引入的TestContext集成测试框架 272

10.4.1面向开发者的支持类 272

10.4.2AbstractJUnit38Spring-ContextTests支持类 274

10.4.3AbstractTransactionalJUnit38-SpringContextTests支持类 275

10.4.4AbstractJUnit4Spring-ContextTests支持类 277

10.4.5AbstractTransactionalJUnit4-SpringContextTests支持类 277

10.5集成测试最佳实践 279

10.6小结 280

第11章 Hibernate集成 281

11.1背景知识及示例 281

11.2HibernateTools介绍 289

11.2.1Ant支持 289

11.2.2Eclipse支持 291

11.3Spring对Hibernate提供的支持 293

11.4运行Hibernate版PetClinic实例 293

11.5基于Hibernate集成的CRUD操作 294

11.5.1HibernateTemplate模板类 294

11.5.2HibemateCallback回调接口 299

11.5.3关于SessionFactoty.getCurrentSession()方法的使用 300

11.6LocalSessionFactotyBean 301

11.7AnnotationSession-FactotyBean 303

11.8事务管理支持 306

11.9基于Hibernate的LOB处理 308

11.10为imagedb示例启用JTA事务 311

11.11集成测试支持 314

11.11.1分析Hibernate版PetClinic实例的集成测试工作 314

11.11.2混合使用JDBC和Hibernate 315

11.12小结 320

第12章 Java持久化API集成 321

12.1背景知识及示例 321

12.2Spring对JPA提供的支持 324

12.3基于JPA集成的CRUD操作 325

12.3.1JpaTemplate模板类 325

12.3.2JpaCallbck回调接口 326

12.3.3@PersistenceContext注解 327

12.4AbstractEntityManager-FactoryBean继承链 329

12.4.1LocalEntityManager-FactotyBean辅助类 329

12.4.2LocalContainerEntity-ManagerFactotyBe辅助类 331

12.4.3DataSourceLookup继承链 333

12.5事务管理支持 335

12.6装载期织入(LTW) 337

12.6.1ReflectiveLoadTimeWeaver实现类 338

12.6.2InstrumentationLoad-TimeWeaver实现类 339

12.6.3LoadTimeWeaver继承链在JPA集成中的应用 340

12.7SharedEntityManagerBean 341

12.8集成测试支持 341

12.8.1AbstractJpaTests支持类 341

12.8.2AbstractAspectjJpaTests支持类 342

12.8.3混合使用JDBC和JPA 344

12.9小结 348

第4篇 集成JavaEE服务及技术 351

第13章 JNDI集成 351

13.1背景知识及示例 351

13.2Spring对JNDI提供的支持 354

13.3JndiObjectFactotyBean 354

13.4〈jeejndi-lookup/〉元素 358

13.5JndiTemplate和JndiCallback的使用 359

13.6小结 360

第14章 EJB3.0集成 361

14.1背景知识及示例 361

14.2Spring对开发EJB3.0组件提供的支持 363

14.3Spring对访问EJB3.0组件提供的支持 365

14.3.1借助JndiObjectFactoty-Bean辅助类 365

14.3.2org.springframework.ejb.access包 366

14.3.3〈jee:remote-slsb/〉元素和〈jee:local-slsb/〉元素 367

14.4关于遗留EJB2.x支持 368

14.5小结 368

第15章 线程池和任务调度集成 369

15.1Spring提供的线程池支持 369

15.1.1SyncTaskExecutor执行器 371

15.1.2SimpleAsyncTaskExecutor执行器 371

15.1.3ThreadPoolTaskExecutor和ConcurrentTaskExecutor执行器 371

15.1.4TimerTaskExecutor执行器 372

15.1.5SimpleThreadPool-TaskExecutor执行器 372

15.1.6commonj.WorkManager-TaskExecutor执行器 372

15.1.7jca.work.WorkManager-TaskExecutor继承链 373

15.2Spring提供的任务调度支持 373

15.2.1针对java.util.Timer的任务调度支持 373

15.2.2针对Quartz的任务调度支持 375

15.2.3针对java.util.concurrent的任务调度支持 380

15.2.4针对CommonJ的任务调度支持 381

15.3小结 382

第16章 Java消息服务集成 383

16.1背景知识及示例 384

16.2Spring对JMS消息提供的支持 386

16.3借助JmsTemplate发送JMS消息 386

16.4同步和异步消费JMS消息 393

16.4.1借助JmsTemplate同步接收JMS消息 393

16.4.2AbstractMessageListener-Container容器 394

16.4.3〈jms:listener-container/〉元素 400

16.5JMS事务管理 400

16.6小结 403

第17章 JavaMail集成 405

17.1背景知识及示例 405

17.2Spring对JavaMail提供的支持 407

17.3发送简单邮件 408

17.4发送含有附件的邮件 411

17.5发送含有HTML和内嵌资源的邮件 413

17.6小结 414

第18章 远程服务集成 415

18.1远程服务背景知识及示例 416

18.2Spring对远程服务提供的支持 419

18.3RMI/RMI-ⅡOP集成 421

18.4Hessian和Burlap集成 423

18.4.1DispatcherServlet和HttpRequestHandlerServlet辅助类 424

18.4.2宿主在SunJDK6.0内置的HTTP服务器中 425

18.5HTTPInvoker支持 426

18.6Web服务集成 427

18.6.1JAX-RPC集成 428

18.6.2JAX-WS集成 429

18.7基于JMS的远程服务 430

18.8小结 432

第19章 Java管理扩展集成 433

19.1背景知识及示例 434

19.2Spring对JMX提供的支持 437

19.3自动注册MBean组件 438

19.3.1关于MBeanExporter的autodetectMode和registrationBehavior属性 439

19.3.2Hibernate暴露的StatisticsServiceMBean 440

19.4将POJO导出成MBean组件 442

19.5控制MBean组件的管理接口 444

19.5.1AbstractConfigurable-MBeanInfoAssembler继承链 445

19.5.2基于注解的Metadata-MBeanInfoAssembler 447

19.5.3〈context:mbean-export/〉和〈context:mbean-server/〉元素 449

19.5.4面向异步处理的Lifecycle接口 451

19.6控制MBean组件的ObjectName 453

19.6.1KeyNamingStrategy实现类 453

19.6.2IdentityNamingStrategy实现类 454

19.6.3MetadataNamingStrategy实现类 454

19.7发送与接收JMX通知 455

19.8通过应用访问MBean组件 458

19.9小结 459

第20章 JavaEE连接器架构集成 461

20.1背景知识及示例 461

20.2Spring对JCA提供的支持 463

20.3CciTemplate及相关回调接口 463

20.4将JCA操作建模成Java对象 466

20.5事务管理 468

20.6宿主在JCA适配器中的DI容器 469

20.6.1将SpringContextResource-Adapter部署到RAR中 470

20.6.2ResourceAdapterFactory-Bean辅助类 471

20.7小结 472

第5篇 Spring2.5高级特性 475

第21章 忘却的Spring高级话题 475

21.1分发和监听事件 475

21.2AOP拦截器链 477

21.3DataSourceUtils、Session-FactoryUtils、EntiryManager-FactoryUtils 478

21.4Web层集成支持 480

21.5〈context:component-scan/〉元素 481

21.6如何优雅地销毁DI容器 481

21.6.1Web应用类型 482

21.6.2EJB应用类型 483

21.6.3JavaSE应用、集成测试类型 484

21.7DI容器的分层管理 485

21.8脚本集成 488

21.9小结 490

第22章 Spring最佳实践 491

22.1注重分层架构设计 491

22.2合理采纳注解技术 492

22.3日志管理策略 492

22.4善待JavaEE容器内置的类装载器 495

22.5逐步采纳Spring2.5 496

22.6小结 498

附录A 基于XMLSchema的权威配置指南 499

A.1XML配置文件 499

A.2〈beans/〉命名空间 501

A.2.1〈import/〉元素 501

A.2.2〈alias/〉元素 501

A.2.3〈bean/〉元素 502

A.2.4〈beans/〉元素 505

A.3〈util/〉命名空间 506

A.3.1〈util:constant/〉元素 506

A.3.2〈util:property-path/〉元素 506

A.3.3〈util:properties/〉元素 507

A.3.4〈util:list/〉元素 507

A.3.5〈util:map/〉元素 507

A.3.6〈util:set/〉元素 508

A.4〈context/〉命名空间 508

A.4.1〈context:property-placeholder/〉元素 508

A.4.2〈context:property-override/〉元素 509

A.4.3〈context:annotation-config/〉元素 509

A.4.4〈context:component-scan/〉元素 509

A.4.5〈context:load-time-weaver/〉元素 509

A.4.6〈context:spring-configured/〉元素 510

A.4.7〈context:mbean-export/〉元素 510

A.4.8〈context:mbean-server/〉元素 510

A.5〈aop/〉命名空间 510

A.5.1〈aop:aspectj-autoproxy/〉元素 511

A.5.2〈aop:config/〉元素 511

A.5.3〈aop:scoped-proxy/〉元素 513

A.6〈c/〉命名空间 514

A.6.1〈tx:advice/〉元素 514

A.6.2〈tx:annotation-driven/〉元素 515

A.6.3〈txjta-transaction-manager/〉元素 515

A.7〈jee/〉命名空间 515

A.7.1〈jee:jndi-lookup/〉元素 516

A.7.2〈jee:local-slsb/〉元素 516

A.7.3〈jee:remote-slsb/〉元素 516

A.8〈jms/〉命名空间 517

A.8.1〈jms:listener-container/〉元素 517

A.8.2〈jms:ica-listener-container/〉元素 518

A.9〈lang/〉命名空间 519

A.9.1〈lang:jruby/〉元素 519

A.9.2〈lang:groovy/〉元素 519

A.9.3〈lang:bsh/〉元素 520

A.9.4〈lang:defaults/〉元素 520

A.10〈p/〉命名空间 521

A.11小结 521