Spring in Action 第二版 读书笔记

Spring模块图

 

下面这部分摘抄自Spring In Action书的p4-p6---------------------------------

核心容器

1.1 的最底层是核心容器。 Spring 核心容器为 Spring 框架提供了基础功能。在这个模块中你会找到 BeanFactory 这个类,它是最基本的 Spring 容器和 Spring DI 所依赖的基础。

从第 2 章开始,贯穿整本书,当遇到使用 DI 来装配 Bean 的时候,我们都会讨论核心模块 ( 任何 Spring 应用的核心 )

Application Context( 上下文 ) 模块

Spring 的应用上下文建立在核心容器之上。 BeanFactory 使 Spring 成为容器,而上下文使 Spring 成为框架。这个模块扩展了 BeanFactory ,添加了对 I18N( 国际化 ) 、应用生命周期事件以及验证的支持。

另外,这个模块提供了很多企业级服务,如电子邮件服务、 JNDI 访问、 EJB 集成、远程调用以及定时服务,并且支持与模板框架 ( Velocity FreeMarker) 的集成。

Spring AOP 模块

AOP 模块中, Spring 对面向切面编程提供了丰富的支持。这个模块是为 Spring 应用开发切面的基础。与 DI 一样, AOP 支持应用对象之间的松耦合。利用 AOP ,应用程序所关心的与其应用的对象关系不大。

Spring AOP 模块提供了多种方法来建立切面,包括基于 AOP Alliance 接口 (http://aopalliance.sf.net) 的切面的建立和对 AspectJ 的支持。第 4 章将深入讨论 Spring AOP 支持。

JDBC 抽象及 DAO 模块

Spring JDBC DAO 模块把要写的样板代码抽象出来,让你的数据库代码变得简单明了,也可以避免因为释放数据库资源失败而引起的问题。这个模块还建立了一个容易理解的数据库异常层,它建立在各种数据库错误信息之上。以后就不用再去解释那些隐晦专有的 SQL 错误信息了。

另外,这个模块利用 Spring AOP 模块为 Spring 应用中的对象提供事务管理服务。

在第 5 章中讨论 Spring 数据访问时,我们将看到 Spring 的基于模板的 JDBC 抽象层是如何简化 JDBC 代码的。

ORM 映射集成模块

Spring 为那些喜欢使用 ORM(Object-relational mapping) 工具的开发人员提供了 ORM 模块。 Spring ORM 支持建立在 DAO 支持之上,并可以方便地构建适合几个 ORM 解决方案的 DAO Spring 不想实现自己的 ORM 解决方案,但是它为许多流行的 ORM 框架做了钩子程序,包括 Hibernate Java Persistence API JDO iBATIS SQL 映射。 Spring 的事务管理支持所有这些 ORM 框架以及 JDBC

Spring 除了提供基于模板的 JDBC 抽象,还提供了类似的 ORM 抽象和永久的框架,这些内容将在第 5 章讨论。

Java 管理扩展 (JMX)

如何方便地展现 Java 应用的内存工作流以便于管理,这是构建应用产品准备的关键部分。 Spring JMX 模块可以方便地展现应用 Bean ,就像 JMX Mbeans 。这样一来,就可以监控和重新配置运行中的应用程序。

我们将在第 12 章详细讨论 Spring JMX 支持。

Java EE 连接器 API(JCA)

企业级应用包括运行在不同服务器和平台上的应用。集成这些应用程序需要一些技巧。 Java EE 连接 API( 也称为 JCA) 提供了一种标准的方法来集成 Java 应用和多种企业信息系统,包括主框架和数据库。

JCA 很多方面与 JDBC 一样,唯一的区别是 JDBC 主要是针对数据库访问,而 JCA 更多是关注连接遗留系统的通用 API Spring JCA 的支持类似于其对 JDBC 的支持,提取出 JCA 的样本代码插入到模板中。

Spring MVC 框架

Spring Web 应用提供了全功能的 MVC(Model/View?Controller) 框架,比如用户界面与应用逻辑是分离的。 Java 有很多类 MVC 框架可选择,例如 Apache Struts JSF WebWork Tapestry

虽然 Spring 可以集成多种其他 MVC 框架,但是 Spring 也提供了自己的 MVC 框架,它改进了 Spring 在应用 Web 层的松耦合技术。

在第 13 章和第 14 章,我们将深入讨论 Spring MVC

Spring Portlet MVC

多数 Web 应用都是基于页面的――也就是说,每个对应用的请求都会实现一个完全新的页面。每个页面都呈现特定的信息或特定的表单来提示用户。基于 portlet 的应用在一个 Web 页面上聚集多个功能,这样在一个页面中一次就可以提供多个应用。

如果想创建基于 portlet 的应用,最好是利用 Spring Portlet MVC 框架。 Spring Portlet MVC 建立在 Spring MVC 基础上,提供了一套控制器来支持 Java portlet API

Spring Web 模块

当装载 Spring 应用上下文时, Spring MVC Spring Portlet MVC 需要一些特殊的考虑。 Spring Web 模块提供了支持 Spring MVC Spring Portlet MVC 的类。

Web 模块还提供了几个支持面向 Web 的任务,例如多部分文件上传和编程绑定到业务对象的请求参数。它还包含了对 Apache Struts Java Server Faces(JSF) 的集成支持。

远程调用

所有应用都不是孤立的。通常,一个应用必须利用另一个应用的某些功能。当通过网络来访问其他应用时,某些形式的远程调用将被用于通讯。

Spring 的远程调用允许将 Java 对象的某些功能展现为远程对象。如果需要远程访问对象,远程调用模块会使编写远程对象很简单,就像它们是本地 POJO 一样。有一些远程调用选项,包括 RMI(Remote Method Invocation ,远程方法调用 ) Hessian Burlap JAX-RPC Spring 自己的 HTTP Invoker

在第 8 章中,我们将详细讨论 Spring 中的多种远程调用选项。

Java 消息服务 (JMS)

远程调用是邓决于网络可靠性和通讯双方的可用性。基于消息的通讯是可靠的,并且即使在网络和端点不可用时,可以保证消息的传递。

Spring Java 消息服务 (Java Message Service) 模块可以将消息发送到 JMS 队列和主题。同时,这个模块还能帮助创建消息驱动的 POJO ,它能够处理异步消息。在第 10 章,我们将详细讨论 Spring 的消息发送机制。

虽然 Spring 包括很多内容,但是最重要的是要认识到 Spring 尽可能避免了重新开发所有事情。 Spring 倾向于保留现有的 API 和框架。

上面这部分摘抄自Spring In Action书的p4-p6---------------------------------

 

第一章 开始 Spring 之旅

  1. DI 的作用是将程序解耦。程序 A 在调用程序 B/C 时,不需要知道 B/C 是如何来的,只需要按照接口定义使用即可。 PS :之前的 service+ 简单工厂方法也可达到这个效果。但 spring 可在 XML 中配置。

  2. AOP 的信用有点类似代理模式。 AOP 可以在类 A 不知情的情况下,为 A 增加新的功能。与代理模式不同, AOP 是在 XML 中配置的。

第二章 基本Bean装配

  1. Spring的容器有多种容器实现。分两类:1、Bean工厂;2、应用上下文。Bean工厂简单,提供了基础的依赖注入支持。应用上下文则比Bean工厂更高级。
    1. 提供文本信息解析工具,包括对国际化支持。
    2. 提供载入文件资源的通用法。
    3. 可向注册为监听器的Bean发送事件。
  2. Bean有自动装配属性功能、awtowire、可以byName、byType…..但这会导致XML文件的可续性降低。
  3. 关于Bean的范围,请参考下表。

 

范围完成任务
singleton定义Bean的范围为每个Spring容器一个实例(默认值)
prototype允许Bean可以被多次实例化(使用一次就创建一个实例)
request定义Bean的范围是HTTP请求。只有在使用有Web能力的Spring上下文(例如Spring MVC)时才有效
session定义Bean的范围是HTTP会话。只有在使用有Web能力的Spring上下文(例如Spring MVC)时才有效
global-session定义Bean的范围是全局HTTP会话。只有在portlet上下文中才有效

 

 

 

 

 

 

 

 

 

 

 

 

 

第三章 高级Bean装配(跳过)

第四章 通知Bean

  1. AOP述语包括①通知(AOP切面的功能和切面执行任务的时机);②连接点、(AOP涉足其它对象的切入点);③切入点(对象的被介入的具体地方);④切面=通知+切入点;⑤引入(可为现有Bean)引入另一个类的某个方法;⑥目标(AOP要介入的对象);⑦代理(user通过代理来调用目标);⑧织入(将目标与代理连接起来的过程)
    为了更好的了解AOP的这些名词,借助书本上的例子来帮助记忆。例子是电厂派抄表工查某一片区用户的用电情况。如下图:

    spring AOP名词解释

  2. 目前的AOP框架有3个:
    1. AspectJ(可以对属性和构造 数的切入) (推荐使用的)
    2. JBoss AOP
    3. Spring AOP
  3. Spring生成被代理类的方法有两种:
    1. 如果目标类实现了一个接口、则使用java.lang.reflect.proxy类来为目标类织入通知(优先)
    2. 如果是普通类、则通过生成它的子类、达到代理的目的;(参代理模式)

      前面的方法设置麻烦,且对被代理的Bean(切入点所处的Bean)要求高(需花实现指定的Proxy Factory Beam).于是导致了自动代理的出现。
自动代理中、Java1.5以后的版本,有“自动代理@Aspect J切面:简单易用、对被代理的Beam没有入侵。将切面加在一个切面类和配置中(caop:conf:g>)。详细方法这里不说了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 第一部分spring的核心 第1章开始spring之旅 1.1spring是什么 1.2开始spring之旅 1.3理解依赖注入 1.3.1依赖注入 1.3.2di应用 1.3.3企业级应用中的依赖注入 1.4应用aop 1.4.1aop介绍 1.4.2aop使用 1.5小结 第2章基本bean装配 2.1容纳你的bean 2.1.1beanfactory介绍 2.1.2使用应用上下文 2.1.3bean的生命 2.2创建bean 2.2.1声明一个简单的bean 2.2.2通过构造函数注入 2.3注入bean属性 2.3.1注入简单的数值 2.3.2使用其他的bean 2.3.3装配集合 2.3.4装配空值 2.4自动装配 2.4.1四种自动装配类型 2.4.2混合使用自动和手动装配 2.4.3何时采用自动装配 2.5控制bean创建 2.5.1bean范围化 2.5.2利用工厂方法来创建bean 2.5.3初始化和销毁bean 2.6小结 第3章高级bean装配 3.1声明父bean和子bean 3.1.1抽象基bean类型 3.1.2抽象共同属性 3.2方法注入 3.2.1基本的方法替换 3.2.2获取器注入 3.3注入非springbean 3.4注册自定义属性编辑器 3.5使用spring的特殊bean 3.5.1后处理bean 3.5.2bean工厂的后处理 3.5.3配置属性的外在化 3.5.4提取文本消息 3.5.5程序事件的解耦 3.5.6让bean了解容器 3.6脚本化的bean 3.6.1给椰子上lime 3.6.2脚本化bean 3.6.3注入脚本化bean的属性 3.6.4刷新脚本化bean 3.6.5编写内嵌的脚本化bean 3.7小结 第4章通知bean 4.1aop简介 4.1.1定义aop术语 4.1.2springaop的支持 4.2创建典型的spring切面 4.2.1创建通知 4.2.2定义切点和通知者 4.2.3使用proxyfactorybean 4.3自动代理 4.3.1为spring切面创建自动代理 4.3.2自动代理@aspectj切面 4.4定义纯粹的pojo切面 4.5注入aspectj切面 4.6小结 第二部分企业spring 第5章使用数据库 5.1spring的数据访问哲学 5.1.1了解spring数据访问的异常体系 5.1.2数据访问的模板化 5.1.3使用dao支持类 5.2配置数据源 5.2.1使用jndi数据源 5.2.2使用数据源连接池 5.2.3基于jdbc驱动的数据源 5.3在spring里使用jdbc 5.3.1处理失控的jdbc代码 5.3.2使用jdbc模板 5.3.3使用spring对jdbc的dao支持类 5.4在spring里集成hibernate 5.4.1选择hibernate的版本 5.4.2使用hibernate模板 5.4.3建立基于hibernate的dao 5.4.4使用hibernate3上下文会话 5.5spring和java持久api 5.5.1使用jpa模板 5.5.2创建一个实体管理器工厂 5.5.3建立使用jpa的dao 5.6spring和ibatis 5.6.1配置ibatis客户模板 5.6.2建立基于ibatis的dao 5.7缓存 5.7.1配置缓存方案 5.7.2缓存的代理bean 5.7.3注解驱动的缓存 5.8小结 第6章事务管理 6.1理解事务 6.1.1仅用4个词解释事务 6.1.2理解spring对事务管理的支持 6.2选择事务管理器 6.2.1jdbc事务 6.2.2hibernate事务 6.2.3jpa事务 6.2.4jdo事务 6.2.5jta事务 6.3在spring中编写事务 6.4声明式事务 6.4.1定义事务参数 6.4.2代理事务 6.4.3在spring2.0里声明事务 6.4.4定义注释驱动事务 6.5小结 第7章保护spring 7.1springsecurity介绍 7.2验证用户身份 7.2.1配置providermanager 7.2.2根据数据库验证身份 7.2.3根据ldap仓库进行身份验证 7.3控制访问 7.3.1访问决策投票 7.3.2决定如何投票 7.3.3处理投票弃权 7.4保护web应用程序 7.4.1代理springsecurity的过滤器 7.4.2处理安全上下文 7.4.3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值