spring开发指南 夏昕著

-
夏昕所著Spring开发指南,用浅显的例子把框架原理解释的很透彻,推荐初学者及开发人员阅读
开发指南 年年初,笔者在国外工作。其时,一位与笔者私交甚好的印度同事 从 公司离职去斯坦福深造,临走送给笔者·本他最钟爱的书籍作为纪念。 工作间隙,时常见到他摩娑此书,摇头不止(印度人习惯和中国人相反,摇头代表肯定 赞同,相当于与中国人点头。笔者刚开始与印度同僚共事之时,每每组织项目会议,一屋子 人频频摇头,让笔者倍感压力 下班后,带着好友离职的失落,笔者夹着这夲书走在回家的路上,恰巧路过东海岸,天 色依然眀朗,随意坐上了海边一家酒吧的露天吧台,要了杯啤酒,随手翻弄着书的扉页,不 经意看见书中遍布的钢笔勾画的线条。 “呵呵, 这家伙,还真把这本书当回事啊”,一边笑着,一边摊开了此书, 想看看到底是怎样的书让这样个聪明老练的同事如此欣赏 从此开始,这本书伴随笔者度过了整整一个月的业余时间 这本书,也就是出自 的 REE Design and 此书已经由电子工业出版社出版,译版名为《设计开发编程指南》。 半年后,一个新的 发布,同样出自 的于笔,这自然 引起了笔者极大的兴趣,这就是 实际上是 书中所阐述的设计思想的具体实现。在 倡导 实用主义的设计思想,并随书提供了一个初步的开发框架实现 开发包)。而 正是这一思想的更全面和具体的体现。 在 开发包的基之上,进行了进步的改造和扩充,使其发展 为一个更加开放、清晰、全面、高效的开发框架。 木文正是针对 的井发指南,讲述了 的设计思 想以及在开发中的实际使用。同时穿插了一些笔者在项目实作中的经验所得 目录 初探 准备工作 构建 基础代码 基础语义 依赖注入的几种实现类型 接口注入 设值注入 构造子注入 几种依赖注入模式的对比总结 封装机制 高级特性 应用与 指南 基于模板的表示层技术 应用中模板技术与技术的对比 输入验证与数据绑定 异常处理 国际化支持 高级特性 驱动模式 拦截器体系 输入校验 国际化支持 数据持久层 事务管理 持久层封装 概念 与 应用 初探 开始 研究之前,先让我们来看一个分钟上于教程。 准备工作 下载 的最新版本,并解压缩到指定目录。 在中新建一个项目,并将 将其相关类库加入项目。 笔者所用为 ,类厍配置如下 安 cts th Libraries|tgrx JARs and class folders on the build path +cb aopalliance jar-D: \W orks\MyWork\Springlib 点 da jar tl-cria comm ons-beanut D:"oxks、 Minora + omm ons-collections-2-1 jar-D: W orks \My Work\Springllib Add External JARs s-dbcp-1.1. iar-D: \Works MyWorkLS 1ib Add variable tcra commons-lang-2.0. jar-D:\M orks\Myork'Springllib +-cra commoIs-logging, jsr-D: \Works\ My ork\\lib Add library +-ra comm ons-logging r-D: \Works Myflork'\Spring\lib Ada cl叠ssFa1deY D: Works \MorkS ar - D: H orks \M Work\Spring\lib Edit t-cra junit jar-I: \M Mork\Spring\li +-C l0g4j-1.2.8. jar-D: \W orks\ ork\Sprinzlib 十 +lck 五.] york\Spring lib D:、 Worls{Mrrk , 1ib D:\Works My orkSpringlib ks M orkiSpringilib JRE SYst 采用 并结合 作为日志输出组件。为了在 调试过程中能观察到 的日志输出,在 中新建 配置文件, 内容如下 配置完成后,项目结构如下图所示: >pIIILE 白 Hellot i 串 aEy 构建 基础代码 示例基础代码包括 接口 接口定义了一个 方法,在我们示例屮,不同的 实现提供了各自的 方法,以完成目标逻辑 接口的两个实现 将其 属性与输入字符串相连接,并返回其大写形式。 将其 属性与输入字符串相连接,并返回其小写形式。 配置文件( ) (请确保配置 位于工作路径之卜,注意工作路径并不等同 的默认工作路径为项日根路径,也就是 文件所在的日录,而默认输出日录是项日 的一部分,并非工作路径。 测试代码 可以看到,上面的测试代码中,我们根据 创建了一个 实 例,并从此实例中获取我们所需的 实现。 运行测试代码,我们看到控制台输出 我们将 中的配置稍加修改: 再次运行测试代码,看到: 示例完成! 很简单的示例,的确很简单,甚至简单到了不够真实 个过,不知大家从这个最简单的例子中看出了什么? 真的只是打印输出了两行不痛不痒的问候语? 仔细观察一下上面的代码,可以看到: 我们的所有程序代码中(除测试代码之外),并没有出现中的任何组件。 和 的 属性均由 通过读取配置文件( 态设置。 客户代码(这旦就是我们的测试代码)仅仅面向接口编程,而无需知道实现类的具体名称。同时, 我们可以很简单的通过修改配置文件来切奂具体的底层实现类。 上面所说的这些,对于我们的实际开发有何帮助? 首先,我们的组件并不需要实现框架指定的接口,因此可以轻松的将组件从 中脱离,甚 至不需要任何修改(这在基于框架实现的应用中是难以想象的)。 其次,组件间的依赖关系减少,极大改善了代码的可重用性。 的依赖注入机制,可以在运行期为组件巸置所需資源,而无需在编写组件代矿时就加以 指定,从而在相当程度上降低了组件之间的耦合 上面的例子中,我们通过 ,在运行期动态将字符串“ ”注入到 实现类的 属性中。 现在偃设我们回到传统的实现模式,应该如何处理? 舣的处坦办法也就是编写一个类(辅助类),完成配置文件读写功能,然后在各个 的构造函数中,调用这个类设置 属性值。 此时,我们的组件就与这个 类库建立了依赖关系,之后我们需要在其他系统中重用这个 组件的话,也必须连同这个类库一并移植。实际开发中,依赖关系往往并非如此简单 组件与项目基层代码之间复杂的关联,使得组件重用性大大下降。 通过依赖注入模式,将依颧关系从编码中脱离出来,从而大大降低了组件之间的耦合, 实现了组件真正意义上的即插即用。这也是 最具价值的特性之 面向接口编程。 诚然,即使没有 ,实现面向接口的设计也不困难 对于面向接凵设计的意义,在 于它为面向接口编程提供了一个更加自然的平台。基于开发,程序员会自然而然倾向于 使用接口来定义不同层次之间的关联关系,这种白发的倾向性,来白于 所提供的简单舒 适的依赖注入实现。 使得接口的定义和使用不再像传统编码过程中那么繁琐(传统编码 过程中,引入一个接口,往往也意味着同时要引入一个类,也许还有一个额外的配置文 件及其读写代码)。 既然给我们带来了如此这般的好处,那么,反过来,让我们试想一下,如果不使用 框 架,回到我们传统的编码模式(乜许正是目前的编码模式),情況会是怎样? 对于上例而言,我们需要怎样才能实现相同的功能? 上:面的接口及其两个实现类 都与 无关,可以保留。而调 用 的测试代码,如樊要实现同样的功能,应该如何编写? 首先,我们必须编写一个配置文件读取类,以实现 属性的可配置化 其次,得有一个 模式的实砚,并结合配置文件的读写完成 的动态加载。 于是,我们实现了一个 来实现这个功能 是 提供的辅助类

1.21MB
夏昕-SpringGuide(Spring 开发指南).pdf
2008-07-21夏昕-SpringGuide(Spring 开发指南).pdf
472KB
夏昕(xiaxin at gmail.com)Spring开发指南.rar
2011-01-17夏昕(xiaxin at gmail.com)Spring开发指南.rar
1.2MB
Spring开发指南_夏昕PDF
2010-07-12Spring开发指南PDF,非常好的东西,需要的下载
333KB
夏昕-ibatis 开发指南pdf版
2019-03-16NULL 博文链接:https://angkor.iteye.com/blog/410476
319KB
ibatis开发指南[夏昕].rar
2019-04-15NULL 博文链接:https://vernonchen163.iteye.com/blog/1769108
2.86MB
深入浅出Hibernate(夏昕)(1)
2019-03-0101 博文链接:https://snail-gtt.iteye.com/blog/125690
2.86MB
深入浅出Hibernate(夏昕)(2)
2019-03-0104 博文链接:https://snail-gtt.iteye.com/blog/125693
694KB
深入浅出Hibernate(夏昕)(3)
2019-03-0109 博文链接:https://snail-gtt.iteye.com/blog/125695
76KB
jd抢购茅台脚本文件
2021-01-04抢购茅台抢购茅台抢购茅台
88KB
python 随机森林算法及其优化详解
2020-09-19主要介绍了ptyhon 随机森林算法及其优化详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Python数据殿堂:数据分析与数据可视化
2020-01-02【入门基础+轻实战演示】【讲授方式轻松幽默、有趣不枯燥、案例与实操结合,与相关课程差异化】利用python进行数据处理、 分析,并结合大量具体的例子,对每个知识进行实战讲解,本课程通过大量练习和案例对各个知识点技能进行详细讲解。通过本 课程,学生将懂得pandas、numpy、matplotlib等数据分析工具;通过实战,学生将了解标准的数据分析流程,学会使用可视化的 方法展示数据及结果。
2020华为HCIA/HCNA/数通/路由交换/实验/视频/教程/持续更新赠题库
2020-05-25本课程不仅可以帮助大家顺利考取华为HCIA证书,同时技术视频均为理论+实战配套讲解,讲解细致,通俗易懂,资料完整,可以让大家学到实实在在企业用到的网络技术,本课程包含完整的学习资料,视频+PPT课件,能够帮助你快速掌握HCIA数通网络技术,同时视频中3-4视频后面的附件课件包含了HCIA数通考试题库(带答案),适合从零基础学网络考HCIA的同学!
18.78MB
Android开发入门60个小案例+源代码
2013-08-24适合初学者,大量简单小例子,完整源代码。
程序员的数学:微积分
2019-09-28本课程介绍程序员必备的数学基础内容,在取材上侧重人工智能、数据分析等热门领域
大数据的入门视频教程
2018-07-26大数据技术入门视频课程,会从基础思想和原理架构开始,全面介绍大数据的思想体系和架构,为学员进一步学习大数据奠定良好的基础。内容涉及大数据的核心问题、大数据核心思想,Google的三篇论文、GFS,Google的分布式文件系统,MapReduce,BigTable、Hadoop和Spark生态体系以及具体应用演示。
24.46MB
图书管理系统(Java + Mysql)我的第一个完全自己做的实训项目
2019-01-04图书管理系统 Java + MySQL 完整实训代码,MVC三层架构组织,包含所有用到的图片资源以及数据库文件,大三上学期实训,注释很详细,按照阿里巴巴Java编程规范编写
16.88MB
2021CFA一级Notes1-5(完整版).zip
2021-01-072021CFA一级Notes1-5(完整版),有5本pdf。
8小时Python零基础轻松入门
2020-05-20
Java并发编程精讲
2019-09-28课程会讲解Java中并发相关技术的基础、原理和应用,从线程安全、线程(池), 锁实现和并发容器等高并发Java实现,去深入理解在并发编程中, 一些最容易被忽视的点,这些点也是我在多年编程经验中实际用到, 对于每个小节小课均会有实际的场景应用为你呈现。 同时这些也是面试过程中面试官考察的重点,掌握这些点,面试和工作时,做到心中有货,不慌不乱,能够胜任。
手把手教你蓝牙协议栈入门
2020-07-16本课程定位是:引领想学习蓝牙协议栈的学生或者从事蓝牙,但是对蓝牙没有一个系统概念的工程师快速入门 课程是多年从事蓝牙经验总结出来的,希望能让你看完有一种醍醐灌顶的感觉。 不要在摸着石头过河了·学习完这些你肯定还是要继续学习蓝牙协议栈,但是至少懂了蓝牙的一些概念以及适合高效的学习方法 本课程一共分为4个小节: 1)蓝牙教程计划.mp4 ,主要介绍下我们的视频规划以及后续的蓝牙教程规划 2)蓝牙的前生后世.mp4 主要介绍下蓝牙的产生背景概念,以及蓝牙从开始产生到现在最新的5.2的发展过程,新赠的功能特性 3)市面蓝牙架构调查.mp4 主要介绍市面蓝牙产品的架构以及HCI蓝牙芯片的详细架构,让你对蓝牙有一个整体的认识,对于后续做蓝牙产品选型大有帮助 4)快速学习蓝牙文档介绍_工具介绍.mp4 主要介绍HCI蓝牙芯片的协议栈以及profile获取途径以及学习蓝牙的高效工具,引领你快速找到适合自己的方法来学习蓝牙
- CSDN 2020 博客之星实时数据排名(Python 爬虫 + PyEcharts) 22242021-01-12CSDN 2020 博客之星实时数据排名:csdn.itrhx.com CSDN 一年一度的博客之星评选开始了,官网地址:https://bss.csdn.net/m/topic/blog_star2020 ,由于官网是按照随机编号排序的,没有按照票数多少排序,为了方便查看排名,可以使用 Python 爬虫 + PyEcharts 来实现实时数据排名。 打开 Google Chrome 的审查工具,可以找到一个 getUsers 的请求,请求地址为:https://bss.csdn.net/m/topic
高并发下的Nginx性能优化实战
2019-12-24【超实用课程内容】 本课程内容包含讲解解读Nginx的基础知识,解读Nginx的核心知识、带领学员进行高并发环境下的Nginx性能优化实战,让学生能够快速将所学融合到企业应用中。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27216 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程永久有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 下载方式:电脑登录https://edu.csdn.net/course/detail/27216,播放页面右侧点击课件进行资料打包下载
-
学院
C#文件传输、Socket通信、大文件断点续传
C#文件传输、Socket通信、大文件断点续传
-
学院
微服务系列第七十一季-Spring入门
微服务系列第七十一季-Spring入门
-
学院
(新)备战2021软考系统集成顺利通关套餐
(新)备战2021软考系统集成顺利通关套餐
-
博客
PBRT的scene.pbrt使用方法
PBRT的scene.pbrt使用方法
-
学院
(新)备战2021软考网络工程师培训学习套餐
(新)备战2021软考网络工程师培训学习套餐
-
博客
虚化四学习笔记(4)—— 使用关卡蓝图学习蓝图基础函数(1)
虚化四学习笔记(4)—— 使用关卡蓝图学习蓝图基础函数(1)
-
下载
简单的SSM框架搭建
简单的SSM框架搭建
-
博客
MYSQL 通过exp()报错注入
MYSQL 通过exp()报错注入
-
学院
【数据分析-随到随学】数据可视化
【数据分析-随到随学】数据可视化
-
下载
移动端rem布局项目源码.zip
移动端rem布局项目源码.zip
-
下载
手机HOSTS解决卫图谷歌.zip
手机HOSTS解决卫图谷歌.zip
-
下载
完美解码软件安装包purecode2009
完美解码软件安装包purecode2009
-
下载
ACC系列(一):ACC的功能、分类及系统组成
ACC系列(一):ACC的功能、分类及系统组成
-
博客
C++基础(1) 指针
C++基础(1) 指针
-
学院
转行做IT-第1章 计算机基础
转行做IT-第1章 计算机基础
-
下载
www.pythonchallenge.com题解第一题
www.pythonchallenge.com题解第一题
-
学院
(新)备战2021软考软件设计师顺利通关套餐
(新)备战2021软考软件设计师顺利通关套餐
-
下载
最新人教版五年级下册语文第七单元基础过关知识整理.doc
最新人教版五年级下册语文第七单元基础过关知识整理.doc
-
博客
springboot菜鸟入门
springboot菜鸟入门
-
博客
学术前沿趋势分析2:论文作者统计
学术前沿趋势分析2:论文作者统计
-
博客
API在线文档
API在线文档
-
学院
备战2021软考网络规划设计师顺利通关培训套餐
备战2021软考网络规划设计师顺利通关培训套餐
-
学院
【数据分析-随到随学】Tableau数据分 析+PowerBI
【数据分析-随到随学】Tableau数据分 析+PowerBI
-
博客
[微语 21.01.16] 因果
[微语 21.01.16] 因果
-
博客
金融交易软件桌面之Qt开发之路
金融交易软件桌面之Qt开发之路
-
学院
【数据分析-随到随学】Hive详解
【数据分析-随到随学】Hive详解
-
博客
蓝桥杯第六天
蓝桥杯第六天
-
博客
docker 高级部分 docker 间的通讯 docker 容器间的通讯 容器间的通信
docker 高级部分 docker 间的通讯 docker 容器间的通讯 容器间的通信
-
博客
Jquery04-练习-全选,全不选,反选
Jquery04-练习-全选,全不选,反选
-
博客
计算机操作系统PV操作
计算机操作系统PV操作