1、什么是 spring?

Spring 是 个 java 企 业 级 应 用 的 开 源 开 发 框 架 。 Spring 主 要 用 来 开 发 Java 应 用, 但 是 有 些 扩 展 是 针 对 构 建 J2EE 平 台 的 web 应 用 。 Spring 框 架 目 标 是 简 化 Jav a 企 业 级 应 用 开 发, 并 通 过 POJO 为 基 础 的 编 程 模 型 促 进 良 好 的 编 程 习 惯 。

2、使用 Spring 框架的好处是什么?

Spring (二) - 图1 轻量: Spring 是轻量的,基本的版本大约 2MB。
Spring (二) - 图2 控制反转: Spring 通过控制反转实现了松散耦合,对象们给出它们的依 赖,而不是创建或查找依赖的对象们。
Spring (二) - 图3 面向切面的编程(AOP): Spring 支持面向切面的编程,并且把应用业务 逻辑和系统服务分开。
Spring (二) - 图4 容器: Spring 包含并管理应用中对象的生命周期和配置。
Spring (二) - 图5 MVC 框架: Spring 的 WEB 框架是个精心设计的框架,是 Web 框架的 一个很好的替代品。
Spring (二) - 图6 事务管理: Spring 提供一个持续的事务管理接口, 可以扩展到上至本地 事务下至全局事务(JTA)。
Spring (二) - 图7 异常处理:Spring 提供方便的 API 把具体技术相关的异常(比如由 JDBC, Hibernate or JDO 抛出的)转化为一致的 unchecked 异常。

3、 Spring 由哪些模块组成?

以 下 是 Spring 框 架 的 基 本 模 块:

Spring (二) - 图8

Spring (二) - 图9

Spring (二) - 图10

Spring (二) - 图11

Spring (二) - 图12

Spring (二) - 图13

Spring (二) - 图14

Spring (二) - 图15

Spring (二) - 图16

Spring (二) - 图17

Spring (二) - 图18

Spring (二) - 图19

Spring (二) - 图20

Core module
Bean module
Context module
Expression Language module
JDBC module
ORM module
OXM module
Java Messaging Service(JMS) module
Transaction module
Web module
Web-Servlet module
Web-Struts module
Web-Portlet module

4、核心容器(应用上下文) 模块。

这 是 基 本 的 Spring 模 块, 提 供 spring 框 架 的 基 础 功 能, BeanFactory 是 任 何 以 spring 为 基 础 的 应 用 的 核 心 。 Spring 框 架 建 立 在 此 模 块 之 上, 它 使 Spring 成 为 一 个 容 器 。

5、 BeanFactory – BeanFactory 实现举例。

Bean 工 厂 是 工 厂 模 式 的 一 个 实 现, 提 供 了 控 制 反 转 功 能, 用 来 把 应 用 的 配 置 和 依 赖 从 正 真 的 应 用 代 码 中 分 离 。

最 常 用 的 BeanFactory 实 现 是 XmlBeanFactory 类 。

6、 XMLBeanFactory

最常 用的 就是 org.springframework.beans.factory.xml.XmlBeanFactory , 它 根据 XML 文件 中的 定义 加载 beans 。 该容 器从 XML 文件 读取 配置 元数 据并 用它 去创 建一 个完 全配 置的 系统 或应 用。

7、解释 AOP 模块

AOP 模块 用于 发给 我们 的 Spring 应用 做面 向切 面的 开发, 很多 支持 由 AOP 联 盟提 供, 这样 就确 保了 Spring 和其 他 AOP 框架 的共 通性 。这 个模 块将 元数 据编 程引 入 Spring。

8、解释 JDBC 抽象和 DAO 模块。

通过 使用 JDBC 抽象 和 DAO 模块, 保证 数据 库代 码的 简洁, 并能 避免 数据 库资 源 错误 关闭 导致 的问 题, 它在 各种 不同 的数 据库 的错 误信 息之 上, 提供 了一 个统 一 的异 常访 问层 。它 还利 用 Spring 的 AOP 模块 给 Spring 应用 中的 对象 提供 事务 管理 服务 。

9、解释对象/关系映射集成模块。

Spring 通过 提供 ORM 模块,支持 我们 在直 接 JDBC 之上 使用 一个 对象/关系 映射 映射 (ORM)工具,Spring 支持 集成 主流 的 ORM 框架,如 Hiberate,JDO 和 iBATIS SQL Maps 。 Spring 的事 务管 理同 样支 持以 上所 有 ORM 框架 及 JDBC。

10、解释 WEB 模块。

Spring 的 WEB 模 块 是 构 建 在 application context 模 块 基 础 之 上, 提 供 一 个 适 合 web 应 用 的 上 下 文 。这 个 模 块 也 包 括 支 持 多 种 面 向 web 的 任 务, 如 透 明 地 处 理 多 个 文 件 上 传 请 求 和 程 序 级 请 求 参 数 的 绑 定 到 你 的 业 务 对 象 。 它 也 有 对 Jakarta Struts 的 支 持 。

12、 Spring 配置文件

Spring 配 置 文 件 是 个 XML 文 件, 这 个 文 件 包 含 了 类 信 息, 描 述 了 如 何 配 置 它 们, 以 及 如 何 相 互 调 用 。

13、什么是 Spring IOC 容器?

Spring IOC 负 责 创 建 对 象, 管 理 对 象 (通 过 依 赖 注 入 (DI) , 装 配 对 象, 配 置 对 象, 并 且 管 理 这 些 对 象 的 整 个 生 命 周 期 。

14、 IOC 的优点是什么?

IOC 或 依 赖 注 入 把 应 用 的 代 码 量 降 到 最 低 。它 使 应 用 容 易 测 试, 单 元 测 试 不 再 需 要 单 例 和 JNDI 查 找 机 制 。 最 小 的 代 价 和 最 小 的 侵 入 性 使 松 散 耦 合 得 以 实 现 。 IOC 容 器 支 持 加 载 服 务 时 的 饿 汉 式 初 始 化 和 懒 加 载 。

15、 ApplicationContext 通常的实现是什么?

Spring (二) - 图21 FileSystemXmlApplicationContext : 此容器从一个 XML 文件中加 载 beans 的定义, XML Bean 配置文件的全路径名必须提供给它的构造函数。

Spring (二) - 图22 ClassPathXmlApplicationContext: 此容器也从一个 XML 文件中加 载 beans 的定义,这里,你需要正确设置 classpath 因为这个容器将在 classpath 里找 bean 配置。
Spring (二) - 图23 WebXmlApplicationContext: 此容器加载一个 XML 文件, 此文件定 义了一个 WEB 应用的所有 bean。

16、 Bean 工厂和 Application contexts 有什么区别?

Application contexts 提供 一种 方法 处理 文本 消息, 一 个通 常的 做法 是加 载文 件 资源 (比如 镜像) , 它们 可以 向注 册为 监听 器的 bean 发布 事件 。 另外, 在容 器或 容器 内的 对象 上执 行的 那些 不得 不由 bean 工厂 以程 序化 方式 处理 的操 作,可以 在 Application contexts 中以 声明 的方 式处 理。 Application contexts 实现 了 MessageSource 接口, 该 接口 的实 现以 可插 拔的 方式 提供 获取 本地 化消 息的 方 法。

17、一个 Spring 的应用看起来象什么?

Spring (二) - 图24 一个定义了一些功能的接口。
Spring (二) - 图25 这实现包括属性,它的 Setter , getter 方法和函数等。
Spring (二) - 图26 Spring AOP。
Spring (二) - 图27 Spring 的 XML 配置文件。
Spring (二) - 图28 使用以上功能的客户端程序。

依赖注入

18、什么是 Spring 的依赖注入?

依赖 注入, 是 IOC 的一 个方 面, 是个 通常 的概 念, 它有 多种 解释 。这 概念 是说 你 不用 创建 对象, 而 只需 要描 述它 如何 被创 建。 你不 在代 码里 直接 组装 你的 组件 和 服务, 但 是要 在配 置文 件里 描述 哪些 组件 需要 哪些 服务, 之 后一 个容 器( IOC 容 器) 负责 把他 们组 装起 来。

19、有哪些不同类型的 IOC (依赖注入)方式?

Spring (二) - 图29 构造器依赖注入: 构造器依赖注入通过容器触发一个类的构造器来实现 的,该类有一系列参数,每个参数代表一个对其他类的依赖。
Spring (二) - 图30 Setter 方法注入: Setter 方法注入是容器通过调用无参构造器或无参 static 工厂 方法实例化 bean 之后,调用该 bean 的 setter 方法,即实现了基 于 setter 的依赖注入。

20、 哪种依赖注入方式你建议使用, 构造器注入, 还是 Setter

方法注入?

你两 种依 赖方 式都 可以 使用, 构 造器 注入 和 Setter 方法 注入 。最 好的 解决 方案 是 用构 造器 参数 实现 强制 依赖, setter 方法 实现 可选 依赖 。

Spring Beans

21.什么是 Spring beans?

Spring beans 是 那 些 形 成 Spring 应 用 的 主 干 的 java 对 象 。 它 们 被 Spring IOC 容 器 初 始 化, 装 配, 和 管 理 。 这 些 beans 通 过 容 器 中 配 置 的 元 数 据 创 建 。 比 如 , 以 XML 文 件 中 的 形 式 定 义 。

Spring 框 架 定 义 的 beans 都 是 单 件 beans。 在 bean tag 中 有 个 属 性 ” singleton ”, 如 果 它 被 赋 为 TRUE, bean 就 是 单 件, 否 则 就 是 一 个 prototype bean。 默 认 是 TRUE, 所 以 所 有 在 Spring 框 架 中 的 beans 缺 省 都 是 单 件 。

22、一个 Spring Bean 定义 包含什么?

一 个 Spring Bean 的 定 义 包 含 容 器 必 知 的 所 有 配 置 元 数 据, 包 括 如 何 创 建 一 个 bean, 它 的 生 命 周 期 详 情 及 它 的 依 赖 。

23、如何给 Spring 容器提供配置元数据?

这 里 有 三 种 重 要 的 方 法 给 Spring 容 器 提 供 配 置 元 数 据 。

XML 配 置 文 件 。

基 于 注 解 的 配 置 。

基 于 java 的 配 置 。

24、你怎样定义类的作用域?

当 定 义 一 个 在 Spring 里, 我 们 还 能 给 这 个 bean 声 明 一 个 作 用 域 。 它 可 以 通 过 bean 定 义 中 的 scope 属 性 来 定 义 。如, 当 Spring 要 在 需 要 的 时 候 每 次 生 产 一 个 新 的 bean 实 例, bean 的 scope 属 性 被 指 定 为 prototype。另 一 方 面,一 个 bea n

每次 使用 的时 候必 须返 回同 一个 实例, 这 个 bean 的 scope 属性 必须 设为 singleton。

25、解释 Spring 支持的几种 bean 的作用域。

Spring 框架 支持 以下 五种 bean 的作 用域:

Spring (二) - 图31 singleton : bean 在每个 Spring ioc 容器中只有一个实例。
Spring (二) - 图32 prototype:一个 bean 的定义可以有多个实例。
Spring (二) - 图33 request:每次 http 请求都会创建一个 bean,该作用域仅在基于 web 的 Spring ApplicationContext 情形下有效。
Spring (二) - 图34 session:在一个 HTTP Session 中,一个 bean 定义对应一个实例。该 作用域仅在基于 web 的 Spring ApplicationContext 情形下有效。
Spring (二) - 图35 global-session:在一个全局的 HTTP Session 中,一个 bean 定义对应 一个实例。该作用域仅在基于 web 的 Spring ApplicationContext 情形下有效。

缺省 的 Spring bean 的作 用域 是 Singleton.

26、 Spring 框架中的单例 bean 是线程安全的吗?

不, Spring 框架 中的 单例 bean 不是 线程 安全 的。

27、解释 Spring 框架中 bean 的生命周期。

Spring (二) - 图36

Spring (二) - 图37

Spring 容器 从 XML 文件中读取 bean 的定义,并实例化 bean。 Spring 根据 bean 的定义填充所有的属性。

Spring (二) - 图38 如果 bean 实现了 BeanNameAware 接口,Spring 传递 bean 的 ID 到 setBeanName 方法。
Spring (二) - 图39 如果 Bean 实现了 BeanFactoryAware 接口, Spring 传递 beanfactory 给 setBeanFactory 方法。
Spring (二) - 图40 如果有任何与 bean 相关联的 BeanPostProcessors, Spring 会在 postProcesserBeforeInitialization()方法内调用它们。
Spring (二) - 图41 如果 bean 实现 IntializingBean 了,调用它的 afterPropertySet 方法, 如果 bean 声明了初始化方法,调用此初始化方法。
Spring (二) - 图42 如果有 BeanPostProcessors 和 bean 关联,这些 bean 的 postProcessAfterInitialization() 方法将被调用。
Spring (二) - 图43 如果 bean 实现了 DisposableBean,它将调用 destroy()方法。

28、哪些是重要的 bean 生命周期方法?你能重载它们吗?

有两 个重 要的 bean 生命 周期 方法, 第 一个 是 setup , 它是 在容 器加 载 bea n 的时 候被 调用 。第 二个 方法 是 teardown 它是 在容 器卸 载类 的时 候被 调用 。

The bean 标签 有两 个重 要的 属性 (init-method 和 destroy-method) 。 用它 们 你可 以自 己定 制初 始化 和注 销方 法。 它们 也有 相应 的注 解(@PostConstruct 和 @PreDestroy) 。

29、什么是 Spring 的内部 bean?

当一 个 bean 仅被 用作 另一 个 bean 的属 性时, 它 能被 声明 为一 个内 部 bean, 为 了定 义 inner bean, 在 Spring 的 基于 XML 的 配置 元数 据中, 可 以在 或 元 素内 使用 元素, 内 部 bean 通常 是匿 名的, 它 们的 Scope 一般 是 prototype。

30、在 Spring 中如何注入一个 java 集合?

Spring 提 供 以 下 几 种 集 合 的 配 置 元 素:

Spring (二) - 图44

Spring (二) - 图45

Spring (二) - 图46

Spring (二) - 图47

类型用于注入一列值,允许有相同的值。
类型用于注入一组值,不允许有相同的值。
类型用于注入一组键值对,键和值都可以为任意类型。
类型用于注入一组键值对,键和值都只能为 String 类型。

31、什么是 bean 装配?

装 配, 或 bean 装 配 是 指 在 Spring 容 器 中 把 bean 组 装 到 一 起, 前 提 是 容 器 需 要 知 道 bean 的 依 赖 关 系, 如 何 通 过 依 赖 注 入 来 把 它 们 装 配 到 一 起 。

32、什么是 bean 的自动装配?

Spring 容 器 能 够 自 动 装 配 相 互 合 作 的 bean, 这 意 味 着 容 器 不 需 要 和 配 置, 能 通 过 Bean 工 厂 自 动 处 理 bean 之 间 的 协 作 。

33、解释不同方式的自动装配 。

有 五 种 自 动 装 配 的 方 式, 可 以 用 来 指 导 Spring 容 器 用 自 动 装 配 方 式 来 进 行 依 赖 注 入 。

Spring (二) - 图48 no: 默认的方式是不进行自动装配, 通过显式设置 ref 属性来进行装配。

Spring (二) - 图49 byName: 通过参数名 自动装配, Spring 容器在配置文件中发现 bean 的 autowire 属性被设置成 byname, 之后容器试图匹配、 装配和该 bean 的属 性具有相同名字的 bean。
Spring (二) - 图50 byType::通过参数类型自动装配, Spring 容器在配置文件中发现 bean 的 autowire 属性被设置成 byType,之后容器试图匹配、装配和该 bean 的属 性具有相同类型的 bean。如果有多个 bean 符合条件,则抛出错误。
Spring (二) - 图51 constructor:这个方式类似于 byType, 但是要提供给构造器参数, 如 果没有确定的带参数的构造器参数类型,将会抛出异常。
Spring (二) - 图52 autodetect: 首先尝试使用 constructor 来自动装配,如果无法工作, 则使用 byType 方式。

34.自动装配有哪些局限性 ?

自动 装配 的局 限性 是:

Spring (二) - 图53 重写:你仍需用 和 配置来定义依赖,意味着总要重写自动装配。
Spring (二) - 图54 基本数据类型:你不能自动装配简单的属性,如基本数据类型, String 字符串,和类。
Spring (二) - 图55 模糊特性:自动装配不如显式装配精确,如果有可能,建议使用显式装配。

35、你可以在 Spring 中注入一个 null 和一个空字符串吗?

可 以 。

Spring 注解

36、什么是基于 Java 的 Spring 注解配置? 给一些注解的例子.

基于 Java 的配 置, 允许 你在 少量 的 Java 注解 的帮 助下, 进 行你 的大 部分 Spring 配置 而非 通过 XML 文件 。
@Configuration注解 为例, 它 用来 标记 类可 以当 做一 个 bean 的定 义, 被
Spring IOC 容器 使用 。另 一个 例子 是@Bean 注解, 它 表示 此方 法将 要返 回一 个 对象, 作 为一 个 bean 注册 进 Spring 应用 上下 文。

37、什么是基于注解的容器配置?

相对 于 XML 文件, 注解 型的 配置 依赖 于通 过字 节码 元数 据装 配组 件, 而非 尖括 号 的声 明。

开发 者通 过在 相应 的类, 方法 或属 性上 使用 注解 的方 式, 直接 组件 类中 进行 配置, 而不 是使 用 xml 表述 bean 的装 配关 系。

38、怎样开启注解装配?

注解 装配 在默 认情 况下 是不 开启 的, 为了 使用 注解 装配, 我们 必须 在 Spring 配置
文件 中配 置 context:annotation-config/元素 。

39、 @Required注解

这个 注解 表明 bean 的属 性必 须在 配置 的时 候设 置, 通过 一个 bean 定义 的显 式的 属性 值或 通过 自动 装配, 若 @Required 注解 的 bean 属性 未被 设置, 容 器将 抛 出 BeanInitializationException。

40、 @Autowired注解

@Autowired注 解 提 供 了 更 细 粒 度 的 控 制, 包 括 在 何 处 以 及 如 何 完 成 自 动 装 配 。 它 的 用 法 和 @Required 一 样, 修 饰 setter 方 法 、 构 造 器 、 属 性 或 者 具 有 任 意 名 称 和/或 多 个 参 数 的 PN 方 法 。
41、 @Qualifier注解

当 有 多 个 相 同 类 型 的 bean 却 只 有 一 个 需 要 自 动 装 配 时, 将 @Qualifier注 解 和 @Autowire注 解 结 合 使 用 以 消 除 这 种 混 淆, 指 定 需 要 装 配 的 确 切 的 bean。

Spring 数据访问

42.在 Spring 框架中如何更有效地使用 JDBC?

使 用 SpringJDBC 框 架, 资 源 管 理 和 错 误 处 理 的 代 价 都 会 被 减 轻 。 所 以 开 发 者 只 需 写 statements 和 queries 从 数 据 存 取 数 据, JDBC 也 可 以 在 Spring 框 架 提 供 的 模 板 类 的 帮 助 下 更 有 效 地 被 使 用, 这 个 模 板 叫 JdbcTemplate (例 子 见 这 里 here)

43、 JdbcTemplate

JdbcTemplate 类 提 供 了 很 多 便 利 的 方 法 解 决 诸 如 把 数 据 库 数 据 转 变 成 基 本 数 据 类 型 或 对 象, 执 行 写 好 的 或 可 调 用 的 数 据 库 操 作 语 句, 提 供 自 定 义 的 数 据 错 误 处 理 。

44、 Spring 对 DAO 的支持

Spring 对 数 据 访 问 对 象 (DAO) 的 支 持 旨 在 简 化 它 和 数 据 访 问 技 术 如 JDBC , Hibernate or JDO 结 合 使 用 。 这 使 我 们 可 以 方 便 切 换 持 久 层 。 编 码 时 也 不 用 担 心 会 捕 获 每 种 技 术 特 有 的 异 常 。

45、使用 Spring 通过什么方式访问 Hibernate?

在 Spring 中 有 两 种 方 式 访 问 Hibernate:

Spring (二) - 图56 控制反转 Hibernate Template 和 Callback。
Spring (二) - 图57 继承 HibernateDAOSupport 提供一个 AOP 拦截器。

46、 Spring 支持的 ORM

Spring 支 持 以 下 ORM:

Spring (二) - 图58

Spring (二) - 图59

Spring (二) - 图60

Spring (二) - 图61

Spring (二) - 图62

Spring (二) - 图63

Hibernate
iBatis
JPA (Java Persistence API)
TopLink
JDO (Java Data Objects)
OJB

47.如何通过 HibernateDaoSupport 将 Spring 和 Hibernate

结合起来?

用 Spring 的 SessionFactory 调用 LocalSessionFactory。集 成过 程分 三步:

Spring (二) - 图64 配置 the Hibernate SessionFactory。
Spring (二) - 图65 继承 HibernateDaoSupport 实现一个 DAO。
Spring (二) - 图66 在 AOP 支持的事务中装配。

48、 Spring 支持的事务管理类型

Spring 支持 两种 类型 的事 务管 理:

Spring (二) - 图67 编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵 活性,但是难维护。
Spring (二) - 图68 声明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用 注解和 XML 配置来管理事务。

49、 Spring 框架的事务管理有哪些优点?

Spring (二) - 图69 它为不同的事务 API 如 JTA, JDBC, Hibernate, JPA 和 JDO,提供 一个不变的编程模式。
Spring (二) - 图70 它为编程式事务管理提供了一套简单的 API 而不是一些复杂的事务 API 如

Spring (二) - 图71

Spring (二) - 图72

它支持声明式事务管理。
它和 Spring 各种数据访问抽象层很好得集成。

50、你更倾向用那种事务管理类型?

大多 数 Spring 框架 的用 户选 择声 明式 事务 管理, 因 为它 对应 用代 码的 影响 最小, 因此 更符 合一 个无 侵入 的轻 量级 容器 的思 想。 声明 式事 务管 理要 优于 编程 式事 务 管理, 虽 然比 编程 式事 务管 理(这种 方式 允许 你通 过代 码控 制事 务) 少了 一点 灵 活性 。

Spring 面向切面编程(AOP)

51、解释 AOP

面向 切面 的编 程, 或 AOP, 是一 种编 程技 术, 允许 程序 模块 化横 向切 割关 注点, 或横 切典 型的 责任 划分, 如 日志 和事 务管 理。

52、 Aspect 切面

AOP 核心 就是 切面, 它 将多 个类 的通 用行 为封 装成 可重 用的 模块, 该 模块 含有 一 组 API 提供 横切 功能 。 比如, 一个 日志 模块 可以 被称 作日 志的 AOP 切面 。 根据 需 求的 不同, 一 个应 用程 序可 以有 若干 切面 。在 Spring AOP 中, 切面 通过 带有 @Aspect 注解 的类 实现 。

52、在 Spring AOP 中,关注点和横切关注的区别是什么?

关注 点是 应用 中一 个模 块的 行为, 一 个关 注点 可能 会被 定义 成一 个我 们想 实现 的 一个 功能 。

横切 关注 点是 一个 关注 点, 此关 注点 是整 个应 用都 会使 用的 功能, 并 影响 整个 应 用, 比如 日志, 安 全和 数据 传输, 几 乎应 用的 每个 模块 都需 要的 功能 。因 此这 些 都属 于横 切关 注点 。

54、连接点

连接 点代 表一 个应 用程 序的 某个 位置, 在 这个 位置 我们 可以 插入 一个 AOP 切面, 它实 际上 是个 应用 程序 执行 Spring AOP 的位 置。

55、通知

通知 是个 在方 法执 行前 或执 行后 要做 的动 作, 实际 上是 程序 执行 时要 通过 SpringAOP 框架 触发 的代 码段 。

Spring 切面 可以 应用 五种 类型 的通 知:

Spring (二) - 图73

Spring (二) - 图74

Spring (二) - 图75

Spring (二) - 图76

Spring (二) - 图77

before:前置通知,在一个方法执行前被调用。
after: 在方法执行之后调用的通知,无论方法执行是否成功。 after-returning: 仅当方法成功完成后执行的通知。 after-throwing: 在方法抛出异常退出时执行的通知。
around: 在方法执行之前和之后调用的通知。

56、切点

切入 点是 一个 或一 组连 接点, 通 知将 在这 些位 置执 行。 可以 通过 表达 式或 匹配 的 方式 指明 切入 点。

57、什么是引入?

引入 允许 我们 在已 存在 的类 中增 加新 的方 法和 属性 。

58、什么是目标对象?

被一 个或 者多 个切 面所 通知 的对 象。 它通 常是 一个 代理 对象 。也 指被 通知 (advised) 对 象。

59、什么是代理?

代理 是通 知目 标对 象后 创建 的对 象。 从客 户端 的角 度看, 代 理对 象和 目标 对象 是 一样 的。

60、有几种不同类型的自动代理?

BeanNameAutoProxyCreator

DefaultAdvisorAutoProxyCreator

Metadata autoproxying

61、什么是织入。什么是织入应用的不同点?

织入 是将 切面 和到 其他 应用 类型 或对 象连 接或 创建 一个 被通 知对 象的 过程 。

织入 可以 在编 译时, 加 载时, 或 运行 时完 成。

62、解释基于 XML Schema 方式的切面实现。

在这 种情 况下, 切 面由 常规 类以 及基 于 XML 的配 置实 现。

63、解释基于注解的切面实现

在这 种情 况下 (基于 @AspectJ 的实 现 ), 涉及 到的 切面 声明 的风 格与 带有 java5 标 注的 普通 java 类一 致。

Spring 的 MVC

64、什么是 Spring 的 MVC 框架?

Spring 配备 构建 Web 应用 的全 功能 MVC 框架 。 Spring 可以 很便 捷地 和其 他 MVC 框架 集成, 如 Struts, Spring 的 MVC 框架 用控 制反 转把 业务 对象 和控 制逻 辑清 晰地 隔离 。它 也允 许以 声明 的方 式把 请求 参数 和业 务对 象绑 定。

65、 DispatcherServlet

Spring 的 MVC 框架 是围 绕 DispatcherServlet 来设 计的,它用 来处 理所 有 的 HTTP 请求 和响 应。

66、 WebApplicationContext

WebApplicationContext 继 承 了 ApplicationContext 并 增 加 了 一 些 WEB 应 用 必 备 的 特 有 功 能, 它 不 同 于 一 般 的 ApplicationContext , 因 为 它 能 处 理 主 题 , 并 找 到 被 关 联 的 servlet。

67、什么是 Spring MVC 框架的控制器?

控 制 器 提 供 一 个 访 问 应 用 程 序 的 行 为, 此 行 为 通 常 通 过 服 务 接 口 实 现 。 控 制 器 解 析 用 户 输 入 并 将 其 转 换 为 一 个 由 视 图 呈 现 给 用 户 的 模 型 。 Spring 用 一 个 非 常 抽 象 的 方 式 实 现 了 一 个 控 制 层, 允 许 用 户 创 建 多 种 用 途 的 控 制 器 。
68、 @Controller注解

该 注 解 表 明 该 类 扮 演 控 制 器 的 角 色, Spring 不 需 要 你 继 承 任 何 其 他 控 制 器 基 类 或 引 用 Servlet API。
69、 @RequestMapping注解

该 注 解 是 用 来 映 射 一 个 URL 到 一 个 类 或 一 个 特 定 的 方 处 理 法 上 。