新書推薦:
《
无尽的海洋:美国海事探险与大众文化(1815—1860)
》
售價:NT$
454.0
《
治盗之道:清代盗律的古今之辨
》
售價:NT$
556.0
《
甲骨文丛书·剑桥世界暴力史(第一卷):史前和古代世界(套装全2册)
》
售價:NT$
959.0
《
甲骨文丛书·中华早期帝国:秦汉史的重估
》
售價:NT$
1367.0
《
欲望与家庭小说
》
售價:NT$
449.0
《
惜华年(全两册)
》
售價:NT$
320.0
《
甲骨文丛书·古代中国的军事文化
》
售價:NT$
454.0
《
中国王朝内争实录(套装全4册):从未见过的王朝内争编著史
》
售價:NT$
1112.0
|
編輯推薦: |
本书是在《精通Spring 3.x企业应用开发详解》的基础上,历时一年的重大调整改版而成的,延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用Spring的各项功能的同时透彻理解Spring的内部实现,真正做到知其然并知其所以然。此外,本书重点突出了实战性的主题,力求使全书内容体现从实际项目中来,到实际项目中去的写作原则。
|
內容簡介: |
Spring 4.0是Spring在积蓄4年后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域*开源平台的翘楚地位。Spring 4.0引入了众多Java开发者翘首以盼的基于Groovy Bean的配置、HTML 5WebSocket支持等新功能,全面支持Java 8.0,*要求是Java 6.0。这些新功能实用性强、易用性高,可大幅降低Java应用,特别是Java Web应用开发的难度,同时有效提升应用开发的优雅性。本书是在《精通Spring 3.x企业应用开发详解》的基础上,历时一年的重大调整改版而成的,延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用Spring的各项功能的同时透彻理解Spring的内部实现,真正做到知其然并知其所以然。此外,本书重点突出了实战性的主题,力求使全书内容体现从实际项目中来,到实际项目中去的写作原则。
|
關於作者: |
陈雄华
技术高手,毕业于厦门大学计算机与信息工程学院,倾心Spring技术研究多年,是ROP开源项目创始人,担任过多家公司的系统架构师、技术总监,主持过多个大型企业级应用及多家公司基础技术平台的研发,拥有丰富的一线实战经验。出版《精通JBuilder 2005》、《精通Spring 3.x》、《Spring就这么简单》等多本技术书籍,广受读者好评。
林开雄
资深软件开发经理,拥有10余年软件开发经验,对Spring、大数据、应用虚拟化、微服务等开源技术的应用和实现原理有深入研究,拥有丰富的产品研发实战经验,目前专注于大数据解决方案以及微服务的研究与实施,参与《精通Spring 3.x》、《Spring就这么简单》等多本技术书籍的创作。
文建国
系统架构设计师、高级项目经理,精通Spring等优秀开源技术在企业中的应用,主要研究方向为云计算、大数据、业务基础平台、分布式等技术。曾参与中国电信ITSP 3.0技术架构规范的编写,有多个大型全国集中项目的架构和管理经验。目前致力于智能制造的人机一体化系统研发,希望通过物联网与互联网的融合提升生产效率和增强企业原有系统。热衷于开源技术布道,曾译有《Spring Data实战》、《大规模Java平台虚拟化与调优》等书籍。
|
目錄:
|
? 第1篇基础篇
第1章Spring概述2
1.1认识Spring2
1.2关于SpringSource4
1.3Spring带给我们什么5
1.4Spring体系结构6
1.5Spring对Java版本的要求8
1.6Spring 4.0新特性8
1.6.1全面支持Java 8.09
1.6.2核心容器的增强11
1.6.3支持用Groovy定义Bean12
1.6.4Web的增强12
1.6.5支持WebSocket12
1.6.6测试的增强13
1.6.7其他13
1.7Spring子项目13
1.8如何获取Spring15
1.9小结16
第2章快速入门17
2.1实例概述17
2.1.1比Hello World更适用的实例18
2.1.2实例功能简介18
2.2环境准备20
2.2.1构建工具Maven20
2.2.2创建库表22
2.2.3建立工程23
2.2.4类包及Spring配置文件规划28
2.3持久层29
2.3.1建立领域对象29
2.3.2UserDao30
2.3.3LoginLogDao33
2.3.4在Spring中装配DAO34
2.4业务层35
2.4.1UserService35
2.4.2在Spring中装配Service37
2.4.3单元测试38
2.5展现层40
2.5.1配置Spring MVC框架40
2.5.2处理登录请求42
2.5.3JSP视图页面44
2.6运行Web应用46
2.7小结48
第3章Spring Boot49
3.1Spring Boot概览49
3.1.1Spring Boot发展背景50
3.1.2Spring Boot特点50
3.1.3Spring Boot启动器50
3.2快速入门52
3.3安装配置54
3.3.1基于Maven环境配置54
3.3.2基于Gradle环境配置56
3.3.3基于Spring Boot CLI环境
配置57
3.3.4代码包结构规划58
3.4持久层59
3.4.1初始化配置59
3.4.2UserDao61
3.5业务层62
3.6展现层64
3.6.1配置pom.xml依赖64
3.6.2配置Spring MVC框架65
3.6.3处理登录请求65
3.7运维支持67
3.8小结70
? 第2篇核心篇
第4章IoC容器72
4.1IoC概述72
4.1.1通过实例理解IoC的概念73
4.1.2IoC的类型75
4.1.3通过容器完成依赖关系的
注入77
4.2相关Java基础知识78
4.2.1简单实例78
4.2.2类装载器ClassLoader80
4.2.3Java反射机制83
4.3资源访问利器85
4.3.1资源抽象接口85
4.3.2资源加载88
4.4BeanFactory和ApplicationContext91
4.4.1BeanFactory介绍92
4.4.2ApplicationContext介绍94
4.4.3父子容器103
4.5Bean的生命周期103
4.5.1BeanFactory中Bean的生命
周期103
4.5.2ApplicationContext中Bean
的生命周期112
4.6小结114
第5章在IoC容器中装配Bean115
5.1Spring配置概述116
5.1.1Spring容器高层视图116
5.1.2基于XML的配置117
5.2Bean基本配置120
5.2.1装配一个Bean120
5.2.2Bean的命名120
5.3依赖注入121
5.3.1属性注入121
5.3.2构造函数注入124
5.3.3工厂方法注入128
5.3.4选择注入方式的考量130
5.4注入参数详解130
5.4.1字面值130
5.4.2引用其他Bean131
5.4.3内部Bean133
5.4.4null值133
5.4.5级联属性134
5.4.6集合类型属性134
5.4.7简化配置方式138
5.4.8自动装配141
5.5方法注入142
5.5.1lookup方法注入142
5.5.2方法替换143
5.6<bean>之间的关系144
5.6.1继承144
5.6.2依赖145
5.6.3引用146
5.7整合多个配置文件147
5.8Bean作用域148
5.8.1singleton作用域148
5.8.2prototype作用域149
5.8.3与Web应用环境相关的Bean
作用域150
5.8.4作用域依赖问题152
5.9FactoryBean153
5.10基于注解的配置155
5.10.1使用注解定义Bean155
5.10.2扫描注解定义的Bean156
5.10.3自动装配Bean157
5.10.4Bean作用范围及生命过程
方法162
5.11基于Java类的配置164
5.11.1使用Java类提供Bean定义
信息164
5.11.2使用基于Java类的配置信息
启动Spring容器167
5.12基于Groovy DSL的配置169
5.12.1使用Groovy DSL提供Bean
定义信息169
5.12.2使用GenericGroovyApplication
Context启动Spring容器171
5.13通过编码方式动态添加Bean172
5.13.1通过DefaultListableBean
Factory172
5.13.2扩展自定义标签173
5.14不同配置方式比较175
5.15小结177
第6章Spring容器高级主题178
6.1Spring容器技术内幕178
6.1.1内部工作机制179
6.1.2BeanDefinition182
6.1.3InstantiationStrategy183
6.1.4BeanWrapper183
6.2属性编辑器184
6.2.1JavaBean的编辑器185
6.2.2Spring默认属性编辑器188
6.2.3自定义属性编辑器189
6.3使用外部属性文件192
6.3.1PropertyPlaceholderConfigurer
属性文件192
6.3.2使用加密的属性文件195
6.3.3属性文件自身的引用198
6.4引用Bean的属性值199
6.5国际化信息201
6.5.1基础知识201
6.5.2MessageSource206
6.5.3容器级的国际化信息资源209
6.6容器事件210
6.6.1Spring事件类结构211
6.6.2解构Spring事件体系的具体
实现213
6.6.3一个实例214
6.7小结215
第7章Spring AOP基础216
7.1AOP概述216
7.1.1AOP到底是什么217
7.1.2AOP术语219
7.1.3AOP的实现者221
7.2基础知识222
7.2.1带有横切逻辑的实例222
7.2.2JDK动态代理224
7.2.3CGLib动态代理228
7.2.4AOP联盟229
7.2.5代理知识小结230
7.3创建增强类230
7.3.1增强类型230
7.3.2前置增强231
7.3.3后置增强235
7.3.4环绕增强236
7.3.5异常抛出增强237
7.3.6引介增强239
7.4创建切面243
7.4.1切点类型243
7.4.2切面类型244
7.4.3静态普通方法名匹配切面246
7.4.4静态正则表达式方法匹配
切面248
7.4.5动态切面251
7.4.6流程切面254
7.4.7复合切点切面256
7.4.8引介切面258
7.5自动创建代理259
7.5.1实现类介绍259
7.5.2BeanNameAutoProxyCreator260
7.5.3DefaultAdvisorAutoProxy
Creator261
7.5.4AOP无法增强疑难问题
剖析262
7.6小结267
第8章基于@AspectJ和Schema的
AOP269
8.1Spring对AOP的支持269
8.2Java 5.0注解知识快速进阶270
8.2.1了解注解270
8.2.2一个简单的注解类271
8.2.3使用注解272
8.2.4访问注解273
8.3着手使用@AspectJ274
8.3.1使用前的准备275
8.3.2一个简单的例子275
8.3.3如何通过配置使用@AspectJ
切面277
8.4@AspectJ语法基础278
8.4.1切点表达式函数278
8.4.2在函数入参中使用通配符279
8.4.3逻辑运算符280
8.4.4不同增强类型281
8.4.5引介增强用法282
8.5切点函数详解283
8.5.1@annotation284
8.5.2execution285
8.5.3args和@args287
8.5.4within288
8.5.5@within和@target289
8.5.6target和this290
8.6@AspectJ进阶291
8.6.1切点复合运算292
8.6.2命名切点292
8.6.3增强织入的顺序294
8.6.4访问连接点信息294
8.6.5绑定连接点方法入参295
8.6.6绑定代理对象297
8.6.7绑定类注解对象298
8.6.8绑定返回值299
8.6.9绑定抛出的异常299
8.7基于Schema配置切面300
8.7.1一个简单切面的配置300
8.7.2配置命名切点302
8.7.3各种增强类型的配置303
8.7.4绑定连接点信息305
8.7.5Advisor配置306
8.8混合切面类型307
8.8.1混合使用各种切面类型308
8.8.2各种切面类型总结308
8.9其他309
8.9.1JVM Class文件字节码转换
基础知识309
8.9.2使用LTW织入切面311
8.10小结314
第9章Spring SpEL316
9.1JVM动态语言316
9.2SpEL表达式概述318
9.3SpEL核心接口319
9.3.1EvaluationContext接口320
9.3.2SpEL编译器321
9.4SpEL基础表达式323
9.4.1文本字符解析323
9.4.2对象属性解析323
9.4.3数组、集合类型解析324
9.4.4方法解析326
9.4.5操作符解析327
9.4.6安全导航操作符329
9.4.7三元操作符330
9.4.8Elvis操作符331
9.4.9赋值、类型、构造器、变量332
9.4.10集合过滤335
9.4.11集合转换335
9.5在Spring中使用SpEL336
9.5.1基于XML的配置336
9.5.2基于注解的配置337
9.6小结338
? 第3篇数据篇
第10章Spring对DAO的支持340
10.1Spring的DAO理念340
10.2统一的异常体系341
10.2.1Spring的DAO异常体系341
10.2.2JDBC的异常转换器343
10.2.3其他持久化技术的异常
转换器344
10.3统一数据访问模板344
10.3.1使用模板和回调机制345
10.3.2Spring为不同持久化技术
所提供的模板类347
10.4数据源348
10.4.1配置一个数据源348
10.4.2获取JNDI数据源352
10.4.3Spring的数据源实现类353
10.5小结353
第11章Spring的事务管理355
11.1数据库事务基础知识355
11.1.1何为数据库事务356
11.1.2数据并发的问题357
11.1.3数据库锁机制359
11.1.4事务隔离级别360
|
內容試閱:
|
本书小序
Spring从2004年发布第一个版本以来,至今已有12载。12年刚好是一个生肖轮回,但在一日千里的计算机领域,12年基本上算是一个世纪了。都说好花不常开,好景不常在,但Spring这朵Java开源世界里芳香馥郁的奇葩不但没有零落成泥,反而满园春色历久弥艳,成为Java开发者无法回避的开源框架。
回顾Spring的光辉岁月,一路与时俱进,引领时代之潮流。总的来说,Spring主要经历了三次重大的版本升级:一为2006年从1.0升级到2.0,在Spring 2.0中新增了XML命名空间、AspectJ及Spring MVC等功能,此外,在Spring 2.5中还引入了注解驱动配置的支持,同时进一步完善了Spring MVC功能;二为2009年从2.5升级到3.0,新增了SpEL、OXM、REST、验证格式化等功能,全面支持Java 5.0;三为2013年从3.0升级到4.0,新增了Groovy Bean配置、HTML 5WebSocket支持等功能,全面支持Java 8.0,最低要求是Java 6.0。Spring始终坚持以小版本快速推进、每三年左右发布一个大版本的演化策略,既保证版本的平稳有序,又能紧跟技术发展的潮流。难能可贵的是,Spring即便发生了这么多次版本的升级,其整体框架依然是向下兼容的,在这一点上,Spring明显区别于Struts、Hibernate等框架的升级风格。
笔者在2007年曾编写了《精通Spring 2.x》,并在2012年出版了升级版本《精通Spring 3.x》。感谢读者朋友的厚爱垂青,其中《精通Spring 3.x》已经重印了11次,成为国内Spring领域的畅销书籍。2013年年底Spring 4.0就已经发布了,从那时起,出版社的朋友多次力促笔者进行版本的同步升级,笔者也希望能与时俱进地对原书进行更新,但囿于工作繁忙,一直未能付诸行动。直到2015年8月左右,才与林开雄、文建国着手筹划《精通Spring 4.x》的升级编写工作。林开雄和文建国是笔者多年的好朋友,二人都是拥有十多年工作经验的Java实战型技术高手,他们不但为人谦和、技术精湛,而且拥有丰厚的创作实力。林开雄早在2012年就参与了《精通Spring 3.x》的撰写工作,文建国则于2014年翻译了《Spring Data实战》。此外,林莉、何彩云、陈谋坤、项群、陈文炎、陈曦、康玉琳、蔡雪峰、康沿清、朱景、贤俊等也一起参与了本书的代码审查及测试工作,在此对大家的努力付出一并表示感谢!
本次改版,不但将全书内容同步更新到Spring 4.0,还对全书结构进行了多方面的优化和调整。移除了两个章节,分别是JavaMail发送邮件(考虑到比较简单)及在Spring中开发Web Service(考虑到Spring MVC开发REST WebService再合适不过了);新增了3个全新的章节,分别是Spring Boot、Spring SpEL及Spring Cache。
本书特点
?揭示内幕,深入浅出:笔者对Spring的源码进行了彻底分析,深刻揭示了Spring框架的技术内幕,让读者知其然,更知其所以然。Spring中的许多设计经验、技巧、模式具有很高的借鉴性,在透彻学习Spring体系结构的同时,读者可以直接将这些方法借用到具体的应用开发中。
?同步更新,与时俱进:虽然在2013年12月就发布Spring 4.0的第一个候选版本,后来又发布了多个RC版本,并最终于2015年8月发布了Spring 4.2的正式版本,但新功能的添加及旧功能的调整从来就没有停止过。本书基于Spring 4.2版本讲解,保证全书内容与时俱进。
?突出重点,淡化边缘:虽然全书篇幅达800多页,但本书没有片面追求内容的面面俱到,相反,我们特别注意内容的剪裁和取舍;对于实用性强的知识点深入分析、深度挖掘,而对于不常用的知识点则点到为止,甚至不纳入本书的范围。举例来说,我们对使用Spring JDBC、Spring Cache及Spring MVC等实用性强的技术都进行了深入分析,而对如何集成EJB、JMX、JCA等不常用的功能完全不涉及,很好地做到了实用性和深入性的统一。
?理论透彻,面向实践:本书在透彻分析原理、讲解技术知识点的同时,特别注意与实际应用的结合。笔者将自身丰富的实战经验糅合到全书的相关知识点中,很好地做到了知识讲解和实践经验的结合,让读者在掌握纯技术知识的同时能够对如何活用技术做到胸有成竹。如笔者在第16章讲解任务调度的内容时,专门辟出16.6节讲解实际应用中任务调度的使用经验;在第18章中讲述使用实战项目开发时,专门通过18.11节讲述了笔者在实际项目中所总结的项目配置文件及数据源的规划方案。此外,我们还适时提供了实战经验的插文,它们在不影响上下文连贯性的同时让读者学到了相关技术的实战经验。诸如此类的以实际应用为导向的内容贯穿全书,这是本书区别于其他书籍的特色之一。
?代码简洁,图例丰富:全书代码在排版布局及内容剪裁上颇费心思,实例代码重点关注当前知识点涉及的内容,弱化边缘代码,并采用特殊的排版方式适时添加简明扼要的注释,方便程序代码的阅读和重点内容的把握。全书拥有大量精美的图表,这些图表很好地解构了上下文中的一些知识难点,大大提高了可读性,降低了理解的难度。
?注重趣味,轻松阅读:由于技术书籍的严谨性、知识性特点,阅读技术书籍往往是枯燥乏味的,更遑论趣味性。笔者对此深有感触,为寻求一些突破,我们在全书大部分章节都精心设计了一个轻松一刻环节。它们和上下文内容存在某种程度的关联性,但其本身是一段趣味性的短文,以便在增强全书趣味性的同时还为读者提供了另一个思考问题的角度。
?相关知识,一网打尽:Spring不但本身涉及众多Java技术,其集成的第三方技术本身也涵盖了丰富的知识。我们在介绍Spring相关技术时,都会简明扼要地讲解相关联的基础知识,其中包括Java的新知识和被集成技术的知识,而不是在完全脱离背景知识的情况下孤立讲解Spring的知识。
?通力合作,倾力打造:本书从筹划到改版完成,历时近8个月。我们交叉审核,多次优化重构,为保证全书质量,多次向出版社申请延迟提交稿件,直到2016年6月才完成所有稿件。
本书结构
本书分为5篇。第1篇为基础篇,包括第1~3章,讲解Spring概述性知识,以便读者快速建立对Spring的整体认识,能够使用Spring快速开发一个简单的项目,而更多深入的知识则在后续篇章中展开。第2篇为核心篇,包括第4~9章,讲解Spring的IoC、AOP及SpEL的知识,这些知识是Spring的核心,也是Spring所有衍生服务及功能的基石。第3篇为数据篇,包括第10~14章,讲解Spring的各种数据访问技术及事务管理的内容,对事务管理的实现机制和各种疑难问题进行剖析。第4篇为应用篇,包括第15~18章,讲解数据缓存、任务调度、Web开发的内容,对于企业应用开发来说,数据缓存及任务调度是两个无法回避的问题,需要重点学习和掌握;此外,本篇还精心设计了一个实战案例,包含需求分析、数据库设计、项目开发、代码测试、应用部署的整体过程,让读者在项目的实战中整体串接Spring的知识点。第5篇为提高篇,包括第19章和第20章,讲解Spring OXM及单元测试的内容;全书工程代码放在本书配套网盘中,请读者下载网盘内容阅读,本书网盘下载地址如下。
百度云盘:http:pan.baidu.coms1boCl3d1。
下面简要介绍一下每章的内容。
第1章:对Spring框架进行了整体性的概述,可使读者快速建立起对Spring整体性的认识。
第2章:通过一个简单的例子展现开发Spring Web应用的整体过程,通过这个实例,读者可以快速跨入Spring Web应用的世界。
第3章:Spring Boot的设计目的是用来简化新Spring应用的搭建和开发过程,本章通过实例向读者讲述了Spring Boot的使用技巧。
第4章:讲解了Spring IoC容器的知识,通过具体的实例详细地讲解了IoC概念;同时,对Spring框架的三个最重要的框架级接口进行了剖析,并对Bean的生命周期进行了讲解。
第5章:讲解了如何在Spring配置文件中使用各种配置方式配置Bean的内容,并对各个配置项的意义进行了深入说明。
第6章:对Spring容器进行了解构,从内部探究Spring容器的体系结构和运行流程。此外,还对Spring容器一些高级主题进行了深入阐述。
第7章:从Spring AOP的底层实现技术入手,一步步深入到Spring AOP的内核中,分析它的底层结构和具体实现。
第8章:对如何使用基于AspectJ配置AOP的知识进行了深入分析,包括使用XML Schema配置文件、使用注解进行配置等内容。
第9章:SpEL不仅仅是一个动态语言,而且Spring容器的很多配置都直接依赖于SpEL工作,因此掌握SpEL是掌握Spring配置的必修课程。
第10章:介绍了Spring所提供的DAO封装层,包括Spring DAO的异常体系、数据访问模板等内容。
第11章:声明式事务配置是Spring的一项重要功能,本章介绍了Spring事务管理的工作机制,以及通过XML、注解等方式进行事务管理配置等内容。
第12章:对实际应用中Spring事务管理的各种疑难问题进行了透彻剖析,让读者对Spring事务管理不再有云遮雾罩的感觉。
第13章:讲解了如何使用Spring JDBC进行数据访问操作,还重点讲述了LOB字段处理、主键的产生和获取等难点知识。
第14章:讲解了如何在Spring中集成Hibernate、MyBatis等数据访问框架,同时,读者还将学到ORM框架的混用和DAO层设计的知识。
第15章:数
|
|