|
读过这本书吗?
最近在读
读过
想读
还不熟悉
|
图书城书列:
加入到博客或社交网站:
|
|
我来评论这本书:
内容提要:
本书由浅入深、循序渐进地介绍了开源应用框架Spring的开发思想和实践。全书共分为20章,内容涵盖了Spring的基础知识体系、获取和部署方法、背后的先进核心理念、相关的部分设计模式和J2EE核心模式、核心组件Bean工厂的使用、Spring风格的面向方面编程、各种J2EE企业级应用框架和解决方案(包括持久数据访问、事务管理、EJB、邮件服务、时程安排、Web MVC框架、表现层视图技术、JMX远程方案等)、Spring和单元测试等内容。
此外本书也剖析了Spring宠物店示例,最后还讨论了宠物店和Martin Fowler企业架构模式(POEAA)的关系。 本书适用初中级读者学习,对高级用户也有很好的参考价值。 喜欢读"这本书"的人也喜欢:
编辑推荐:
本书由浅入深、循序渐进地介绍了开源应用框架Spring的开发思想和实践。全书共分为20章,内容涵盖了Spring的基础知识体系、获取和部署方法、背后的先进核心理念、相关的部分设计模式和J2EE核心模式、核心组件Bean工厂的使用、Spring风格的面向方面编程、各种J2EE企业级应用框架和解决方案(包括持久数据访问、事务管理、EJB、邮件服务、时程安排、Web MVC框架、表现层视图技术、JMX远程方案等)、Spring和单元测试等内容。
此外本书也剖析了Spring宠物店示例,最后还讨论了宠物店和Martin Fowler企业架构模式(POEAA)的关系。 目录:
第1章 Spring基础知识 1
1.1 Spring的来历和目标 1 1.2 Spring概览 2 1.3 Spring的应用场景 3 1.4 Spring和J2EE 5 1.4.1 经典J2EE体系架构 5 1.4.2 轻量级容器 6 1.4.3 Spring和J2EE的关系 6 1.5 小结 6 第2章 开始Spring之旅 7 2.1 获取Spring 7 2.1.1 两大开源网站简介 7 2.1.2 获取Spring发布包和源代码 7 2.2 Spring的标准发布包和相关软件包 9 2.2.1 Spring标准发布包 9 2.2.2 Spring相关软件包 10 2.2.3 Spring自带范例 12 2.3 部署Spring 13 2.4 Spring应用初体验 14 2.4.1 Hello World遇到的问题 14 2.4.2 使用Spring对Hello World进行重构 20 2.4.3 实现依赖注射(DI) 22 2.4.4 重构总结 24 2.4.5 简单的Web应用程序Hello World 24 2.5 小结 26 第3章 贯穿Spring应用的核心理念 27 3.1 轻量级容器再探 27 3.1.1 容器和轻量级容器 27 3.1.2 需要容器的理由 28 3.1.3 轻量级容器的优势 28 3.2 控制反转(IoC) 28 3.2.1 一个简单的例子 29 3.2.2 引入问题 31 3.2.3 使用控制反转(Inversion of Control)模式 32 3.2.4 总结 33 3.3 依赖注射 34 3.3.1 依赖注射的几种形式 35 3.3.2 使用Spring 进行设值方法和构造函数注射 35 3.3.3 设值方法注射和构造函数注射的使用场合 36 3.4 面向方面编程(Aspect Oriented Programming) 37 3.4.1 AOP的历史来源 37 3.4.2 为什么需要AOP 38 3.4.3 AOP的重要概念 39 3.4.4 理解“横切” 41 3.4.5 AOP的实现策略 43 3.4.6 认识AspectJ 44 3.4.7 安装AspectJ的运行环境 44 3.4.8 用J2SE动态代理实现AOP 47 3.4.9 用AspectJ实现AOP 51 3.4.10 深入理解AspectJ 54 3.5 单元测试(Unit Test) 58 3.5.1 单元测试和JUnit框架 59 3.5.2 JUnit框架的3个核心概念 60 3.5.3 准备测试 60 3.5.4 添加测试代码并进行测试 62 3.5.5 取得更有意义的出错信息 63 3.5.6 捕捉错误信息 64 3.5.7 单元测试技巧 65 3.6 测试驱动开发(Test Driven Development) 67 3.6.1 传统测试的问题 67 3.6.2 测试驱动开发的应对策略 68 3.6.3 一个简单的示例 68 3.6.4 总结测试驱动开发的优势 73 3.7 小结 74 第4章 模式:Spring前行的路标 75 4.1 模式(Pattern)入门 75 4.1.1 什么是模式 75 4.1.2 不用模式产生的问题 76 4.1.3 通过实例理解模式本质 79 4.1.4 小结 81 4.2 工厂模式(Design Pattern:Factory Method)的精髓 81 4.2.1 引入问题 82 4.2.2 解决方法 83 4.2.3 工厂模式和依赖倒置的关系 85 4.3 单例模式(Design Pattern:Singleton) 88 4.3.1 单例模式的实现 88 4.3.2 单例注册表 89 4.4 模板模式和策略模式(Design Pattern:Template Method And Strategy) 91 4.4.1 模板模式 92 4.4.2 策略模式 95 4.5 代理模式(Design Pattern:Proxy) 100 4.5.1 第一个代理模式的例子 100 4.5.2 虚拟代理(Virtual Proxy) 103 4.6 数据访问对象模式(J2EE Pattern:Data Access Object) 105 4.7 模型视图控制器模式(Architecture/Framework Pattern:Model View Controller) 113 4.7.1 Model 1和Model 2简介 114 4.7.2 一个Model 2框架示例 115 4.8 框架与模式的关系 120 4.9 Spring和工厂模式 121 4.9.1 Spring工厂体系的另类视图 121 4.9.2 Spring工厂核心原理 122 4.10 Spring和单例模式 123 4.11 Spring的模板以及策略模式 125 4.11.1 Spring模板模式 125 4.11.2 Spring策略模式 126 4.12 Spring和代理模式 128 4.13 Spring和数据访问对象模式 129 4.14 Spring和MVC模式 131 第5章 Spring核心Bean工厂装配指南 133 5.1 核心Bean工厂 133 5.1.1 初识Bean工厂 133 5.1.2 拥有一份Bean的基础定义 135 5.1.3 使用构造函数创建Bean 136 5.1.4 使用静态工厂方法创建Bean 136 5.1.5 使用实例工厂方法创建Bean 137 5.1.6 Bean的标识符 139 5.1.7 是否使用Singleton 139 5.2 装配各种应用协作对象:Bean 141 5.2.1 设置Bean的属性和协作者 141 5.2.2 Bean的依赖决议 146 5.2.3 构造子参数决议 147 5.2.4 自动装配(Autowiring) 150 5.2.5 依赖检查 152 5.3 Bean属性和构造函数参数的细节 153 5.3.1 使用value元素设定属性 153 5.3.2 使用null元素设定空值 154 5.3.3 使用collection(集合)元素定义集合 154 5.3.4 通过嵌套Bean元素来定义内部Bean(innerBean) 157 5.3.5 使用idref元素预检错误 158 5.3.6 使用ref元素设定依赖 158 5.3.7 value与ref的简写式 161 5.3.8 使用depends-on属性强制依赖 162 5.4 方法也可以被注射 162 5.4.1 使用Lookup方法注射 162 5.4.2 替换任意方法 164 5.5 定制Bean的一些原生属性 165 5.5.1 生命周期接口 165 5.5.2 让Bean“知道”自己的身份 167 5.5.3 什么是FactoryBean 169 5.6 父和子Bean的定义 170 5.7 使用后处理器(Post-Processor) 173 5.7.1 使用BeanPostProcessor定制Bean 173 5.7.2 使用BeanFactoryPostProcessor定制Bean工厂 175 5.7.3 使用自定义的PropertyEditor 177 第6章 ApplicationContext和更多特性 178 6.1 ApplicationContext简介 178 6.2 ApplicationContext的扩展功能 178 6.2.1 资源国际化 178 6.2.2 事件传播 181 6.2.3 底层资源和ApplicationContext 184 6.3 在ApplicationContext中客制Bean的属性和行为 188 6.4 使用自定义的PropertyEditors 189 6.5 创建Web应用上下文 192 6.6 更多的轻松装配方式 193 6.6.1 从属性表达式来设置Bean的属性或者构造函数参数 193 6.6.2 从一个字段值来设置Bean的属性或者构造函数参数 195 6.6.3 调用另外一个方法并且使用其返回值(也可以没有返回值) 195 6.6.4 引入其他Bean的定义文件 196 6.7 Bean包装器(Wrapper)和属性编辑器(PropertyEditor) 197 6.7.1 BeanWrapper简介 197 6.7.2 JavaBean属性的设置、获取及嵌套 197 6.7.3 属性编辑器 200 6.8 Spring验证机制初探 202 6.9 小结 203 第7章 Spring面向方面编程基础 204 7.1 Spring AOP基础概念 204 7.1.1 AOP联盟简介 204 7.1.2 Spring AOP功能简介 205 7.1.3 Spring AOP概念重整 206 7.2 Spring AOP编程起步 207 7.2.1 陈旧案例重现 207 7.2.2 抽离关注点 208 7.2.3 划分切入点 210 7.2.4 结合Spring AOP和IoC:声明配置 212 7.3 Spring AOP代理和代理工厂 213 7.3.1 Spring代理工厂简介 214 7.3.2 使用ProxyFactory 214 7.3.3 使用ProxyFactoryBean 215 7.3.4 使用ProxyFactoryBean暴露的属性 215 7.3.5 选择合适的AOP代理 218 7.4 Spring AOP建议(Advice) 219 7.4.1 前置建议(Before Advice) 219 7.4.2 返回后(后置)建议(After Returning Advice) 224 7.4.3 环绕拦截建议(Interception Around Advice) 230 7.4.4 抛出建议(Throws Advice) 234 7.4.5 引介建议(Introduction Advice) 237 7.5 Spring AOP切入点(Pointcut)和顾问(Advisor) 237 7.5.1 未使用切入点存在的问题 237 7.5.2 引入切入点和顾问 237 7.5.3 初识切入点背后的ClassFilter和MethodMatcher接口 239 7.5.4 透过MethodMatcher接口了解静态和动态切入点 239 7.5.5 静态切入点和顾问DefaultPointcutAdvisor 242 7.5.6 静态切入点和顾问StaticMethodMatcherPointcut 242 7.5.7 静态切入点和顾问NameMatchMethodPointcut 245 7.5.8 使用正则表达式切入点 246 7.5.9 使用便利的切入点顾问(PointcutAdvisor) 247 7.5.10 使用动态切入点(Dynamic Pointcut)和自定义顾问(Advisor) 249 第8章 面向方面编程(AOP)高级应用 254 8.1 Spring AOP引介(Introduction)概述 254 8.2 使用混入(Mixin)实现引介(Introduction)建议 256 8.2.1 引入目标对象和待织入功能接口 256 8.2.2 给予关键引介建议 257 8.2.3 声明配置引介建议并测试 259 8.3 使用自动代理(Auto Proxy) 262 8.4 Spring AOP企业级服务 264 8.4.1 Spring AOP企业级服务菜单 264 8.4.2 使用TransactionProxyFactoryBean提供声明式事务管理 265 8.4.3 更为强大灵活的事务管理声明方式 270 8.4.4 使用EJB代理 272 8.5 小结 272 第9章 J2EE的持久化数据访问方案 273 9.1 传统高效的JDBC方案 273 9.2 基于SQL语句映射的Ibatis框架 275 9.2.1 IBatis简介 275 9.2.2 IBatis和高级ORM工具的比较 275 9.2.3 IBatis的应用场合 276 9.2.4 IBatis示例快照 276 9.3 流行的ORM利器Hibernate 278 9.3.1 Hibernate简介 278 9.3.2 Hibernate示例快照 279 9.4 再探数据访问对象(DAO) 282 9.4.1 传统的JDBC和DAO 282 9.4.2 IBatis和DAO 282 9.4.3 Hibernate和DAO 286 9.5 ORM方案的应用场合 286 9.6 宠物店背后的IBatis:SQL Map基本概念 286 9.7 宠物店背后的IBatis:XML配置文件 287 9.7.1 SQL Map的XML配置文件 287 9.7.2 使用 9.7.3 使用 9.7.4 使用 9.7.5 使用 9.7.6 使用 9.7.7 使用 9.7.8 先行准备主控测试和子测试套件 293 9.8 宠物店背后的IBatis:XML映射文件 294 9.8.1 SQL Map的XML映射文件 294 9.8.2 通过Mapped Statement使用SQL 296 9.8.3 使用 9.8.4 SQL语句特殊规则 297 9.8.5 内联参数(Inline Parameter)简介 298 9.8.6 使用parameterClass指定参数类 300 9.8.7 基本类型输入参数 300 9.8.8 使用resultClass指定结果类 301 9.8.9 使用resultMap配置映射 302 9.8.10 IBatis事务处理 303 9.8.11 小结 304 9.9 宠物店背后的IBatis:XML映射文件高级特性 305 9.9.1 IBatis自动生成的主键 305 9.9.2 简单的动态SQL元素 306 9.9.3 缓存Mapped Statement结果集 307 9.9.4 缓存类型 308 9.9.5 动态Mapped Statement 310 9.9.6 运行自动测试 312 9.10 用Hibernate创建Spring宠物店的简易进货系统 313 9.10.1 Spring宠物店持久层渗入 313 9.10.2 实现Hibernate进货DAO:实体持久对象 314 9.10.3 实现Hibernate进货DAO:映射和基本配置 315 9.10.4 实现Hibernate进货DAO:工具类和DAO实现 317 9.10.5 实现Hibernate进货DAO:测试验收 318 9.11 小结 320 第10章 Spring和J2EE持久化数据访问 321 10.1 Spring对数据访问对象(DAO)的支持 321 10.1.1 通用的数据访问异常 321 10.1.2 通用的DAO抽象支持类 321 10.1.3 向业务对象注射DAO 322 10.2 Spring对JDBC的支持 324 10.2.1 JdbcTemplate和数据源概述 324 10.2.2 使用JdbcTemplate和数据源 325 10.2.3 对象化RDBMS操作概述 327 10.2.4 对象化RDBMS操作:使用MappingSqlQuery 328 10.2.5 对象化RDBMS操作:使用SqlUpdate 331 10.3 Spring对IBatis的支持 332 10.3.1 标准JavaBean实体和映射 332 10.3.2 衔接IBatis配置和DAO实现 333 10.3.3 关键整合点:Spring配置文件 334 10.3.4 添加声明式事务管理 335 10.4 Spring对Hibernate的支持 336 10.4.1 在Spring上下文中配置SessionFactory 336 10.4.2 重建Hibernate进货DAO伪实现 338 10.4.3 TDD实现规划测试案例 339 10.4.4 TDD 前言:
J2EE非常复杂,往往使人们付出高昂的学习成本却难以把握,Spring的出现大大简化了传统的J2EE开发模式。作为一款基于控制反转、依赖注射的轻量级容器,Spring在广博的J2EE世界中,筑起了一座开源应用框架的里程碑。
本书帮助广大国内开发者由浅入深,全面了解并掌握Spring。无论对于初涉或已经熟悉Spring的读者,通过本书的阅读,都将大获裨益。
本书在内容的编排和目录组织上可谓匠心独具,力争完美。读者通过全书丰富真实、趣味盎然的示例,可以迅速掌握Spring的开发及其背后的核心理念。另外,本书也是一本软件模式和各类流行J2EE框架的精要指南。
本书有如下优点:
1.框架源码,剖析到位
本书对Spring..
|