Spring技术内幕:深入解析Spring架构与设计原理.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Spring技术内幕:深入解析Spring架构与设计原理.pdf》由会员分享,可在线阅读,更多相关《Spring技术内幕:深入解析Spring架构与设计原理.pdf(149页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Spring技 术 内 幕 深 入 解 析 Spring架 构 与 设 计 原 理(一)引 子 缘 起 已 经 很 久 没 有 写 帖 子 了,现 在 总 算 是 有 点 时 间 写 些 东 西,也 算 是 对 自 己 的 一 个 记 录 吧。刚 刚 完 成 了 一 个 软 件 产 品,从 概 念 到 运 营 都 弄 了 一 下,正 在 推 广 当 中,虽 然 还 没 有 能 够 达 到 盈 亏 平 衡,但 是 这 个 过 程,对 自 己 也 算 是 一 种 历 练。先 不 管 结 果 如 何,好 呆 走 过 这 么 一 遭 了。我 打 算 用 这 个 帖 子,把 自 己 在 这 个 过 程
2、中 的 一 些 心 得,特 别 是 对 Spring新 的 理 解,记 录 下 来。使 用 这 个 帖 子 的 标 题,持 续 下 来。简 单 来 说,自 己 的 软 件 产 品 是 一 个 基 于 互 联 网 的 SaaS协 同 软 件 平 台,操 作 简 单,支 持 流 程 定 义,管 理 和 多 种 客 户 端-像 短 信,MSN,智 能 手 机 什 么 的(我 这 里 就 不 多 做 什 么 广 告 了),也 有 一 个 企 业 版 的 版 本,使 用 的 技 术 框 架 是 Hibernate+Spring+Wicket,下 面 是 Linux和 MySQL,还 有 云 计 算 的
3、平 台 的 使 用,以 支 持 其 扩 展 性,虽 然 现 在 还 没 有 可 扩 展 性 的 需 求,但 似 乎 不 难 从 SaaS上,就 会 想 到 云 计 算,其 实,它 们 真 的 是 天 生 的 一 对!关 于 云 计 算 启 己 对 这 个 技 术 很 感 兴 趣,觉 得 和 开 源 软 件 的 结 合,是 很 有 意 思 的,因 为 它 们 都 有 基 于 服 务 的 基 因,在 云 计 算 平 台 的 使 用 上,也 有 一 些 初 步 的 实 践。云 计 算 是 一 个 很 有 意 思 的 话 题,但 在 这 里 主 要 是 想 谈 Spring,所 以 对 云 计 算,这
4、 里 就 先 不 多 说 了,但 非 常 欢 迎 有 兴 趣 的 朋 友 和 一 起 另 外 找 地 方 讨 论!回 到 正 题,在 我 自 己 的 产 品 中,其 中 除 了 Wicket和 云 计 算 外,其 他 都 是 大 家 非 常 熟 知 的 了,像 Hibernate,Spring,MySQL什 么 的。在 这 个 过 程 中,发 现 自 己 对 一 些 技 术 点 也 有 了 新 的 认 识,最 有 体 会 的 是 Spring。当 然,在 这 个 过 程 中,更 大 的 收 获 是 对 产 品 开 发 整 个 过 程 的 认 识,在 这 点 上,真 是 一 言 难 尽 回 到
5、自 己 还 算 了 解 的 Spring,这 次 我 使 用 的 是 3.0的 代 码,所 以,有 机 会 也 把 这 些 代 码 读 了 几 遍,比 原 来 的 理 解 要 加 深 了 许 多,也 发 现 了 不 少 和 2.0代 码 不 同 的 地 方,以 及 自 己 一 些 对 Spring的 新 的 理 解,这 些,就 让 我 就 用 这 个 帖 子 系 列,给 自 己 总 结 一 下,也 算 是 对 自 己 以 前 的 那 个 代 码 分 析 的 帖 子 做 一 个 新 的 交 代 吧。自 己 对 Spring 一 点 小 小 的 见 解 简 化 Java企 业 应 用 的 开 发,
6、是 Spring框 架 的 目 标.就 是 我 们 熟 知 的 当 年 的 那 个 interface21,也 亦 非 吴 下 阿 蒙 了,由 它 演 进 出 来 的 Spring,以 及 由 它 带 来 的 崭 新 开 发 理 念,也 早 已 伴 随 着 这 个 开 源 框 架 的 广 泛 应 用,而 飞 入 寻 常 百 姓 家。与 此 同 时,伴 随 着 Spring的 成 熟,开 源 社 区 的 成 长,在 Rod.Johnson的 领 导 下,以 Spring为 核 心 的 一 系 列 开 源 软 件 的 产 品 组 合,其 脉 络 也 逐 渐 的 清 晰 和 丰 富 起 来;现 在,
7、已 经 发 展 成 为 一 个 包 括 软 件 运 行,构 建,部 署 运 营,从 而 涵 盖 整 个 软 件 服 务 生 命 周 期 的 产 品 族 群;同 时 也 成 为,在 当 今 主 流 的 软 件 业 态 中,一 个 不可 或 缺 的 重 要 组 成。在 最 近 完 成 的 VMware公 司 对 Spring的 运 营 者 SpringSource公 司 的 收 购 中,也 让 我 们 又 看 到 了 一 个,在 开 源 软 件 中,蕴 含 着 的 巨 大 商 业 价 值,以 及 又 一 次 基 于 开 源 模 式 的 商 业 成 功;也 让 我 们 看 到,Spring为 自 己
8、 设 计 的 未 来 定 位,它 与 云 计 算 的 融 合 趋 势,以 及,努 力 成 为 在 云 计 算 业 态 中,PaaS(Platform As aService)服 务 有 力 竞 争 者 的 战 略 设 想;由 此,可 以 想 象,在 云 计 算 这 个 全 新 的 计 算 时 代 中,如 何 秉 承 Spring的 一 贯 风 格,为 云 计 算 应 用 的 开 发,提 供 高 可 靠,高 可 用,高 可 扩 展,高 性 能 的 应 用 平 台,对 Spring团 队 来 说,是 一 个 面 临 的 全 新 挑 战;在 这 个 领 域 中 的 雄 心 和 今 后 的 作 为,那
9、 就 让 我 们 一 起 拭 目 以 待 吧。这 里 也 有 点 凑 巧 了,正 好 Spring和 云 计 算 都 是 自 己 喜 欢 的 东 西,说 不 定 以 后,我 还 能 够 在 这 两 者 的 结 合 上 再 写 些 东 西 呢。作 为 一 个 庞 大 的 体 系,Spring在 Java企 业 应 用 中,和 我 们 熟 悉 的 企 业 应 用 服 务 器 一 样,比 如 我 们 熟 知 的 其 他 产 品,像 Weblogic,Websphere,JBoss,.NET这 些 等 等,其 定 位 和 目 的,都 在 于 希 望 能 够 起 到 一 个 企 业 应 用 资 源 的
10、集 成 管 理,以 及 为 应 用 开 发 提 供 平 台 支 持 的 作 用,这 和 我 们 熟 知 的,像 UNIX和 Windows这 样 传 统 意 义 上 的 操 作 系 统,在 传 统 的 计 算 系 统 中,起 到 的 作 用 非 常 的 类 似。只 不 过 按 照 个 人 的 理 解,它 们 不 同 在 于,我 们 熟 知 的 传 统 操 作 系 统 关 心 的 是 存 储,计 算,通 信,外 围 设 备 这 些 物 理 资 源 的 管 理,并 在 管 理 这 些 资 源 的 基 础 上,为 应 用 程 序 提 供 一 个 统 一 平 台 和 服 务 接 口;而 像 Sprin
11、g这 样 的 应 用 平 台,它 们 关 心 的 是 在 Java企 业 应 用 中,对 包 括 那 些 像 Web应 用,数 据 持 久 化,事 务 处 理,消 息 中 间 件,分 布 式 计 算 等 等 这 些,为 企 业 应 用 服 务 的 抽 象 资 源 的 统 一 管 理,并 在 此 基 础 上,为 应 用 提 供 一 个 基 于 POJO的 开 发 环 境。尽 管 各 自 面 向 的 资 源,管 理 的 对 象,支 持 的 应 用 以 及 使 用 的 场 景 不 同,但 这 两 者 在 整 个 系 统 中 的 定 位,却 依 然 有 着 可 以 类 比 和 相 互 参 考 的 地
12、方,从 某 种 意 义 上 看,它 们 都 起 到 一 个 资 源 协 调,平 台 支 持,以 及 服 务 集 成 的 作 用。所 以 我 觉 得 可 以 使 用,我 们 看 待 传 统 操 作 系 统 的 方 法 和 一 些 基 本 观 念,来 对 Spring进 行 系 统 分 析 以 及 对 Spring进 行 层 次 划 分,这 样 可 能 更 加 容 易 理 解,同 时,所 以,个 人 感 觉,仿 照 传 统 操 作 系 统 的 眼 光,把 对 Spring框 架 的 实 现,划 分 为 核 心,组 件 和 应 用 这 三 个 基 本 的 层 次,来 理 解 Spring框 架 是
13、不 错 的 一 个 方 法,就 算 是 众 所 周 知 的 三 段 论 的 应 用 吧。不 知 道 这 种 分 析 方 法,是 不 是 太 庸 俗,但 我 自 己 还 是 觉 得 挺 受 用 的,呵 呵,谁 叫 我 是 个 俗 人 呢!今 天 先 写 一 些,就 算 是 起 个 头 吧,明 天 继 续!写 写 IOC/AOP的 一 些 具 体 东 西。深 入 解 析 Spring架 构 与 设 计 原 理(一)IOC实 现 原 理 IOC的 基 础 下 面 我 们 从 IOC/AOP开 始,它 们 是 Spring平 台 实 现 的 核 心 部 分;虽 然,我 们 一 开 始 大 多 只 是
14、在 这 个 层 面 上,做 一 些 配 置 和 外 部 特 性 的 使 用 工 作,但 对 这 两 个 核 心 模 块 工 作 原 理 和 运 作 机 制 的 理 解,对 深 入 理 解 Spring平 台,却 是 至 关 重 要 的;因 为,它 们 同 时 也 是 Spring其 他 模 块 实 现 的 基 础。从 Spring要 做 到 的目 标,也 就 是 从 简 化 Java EE开 发 的 出 发 点 来 看,简 单 的 来 说,它 是 通 过 对 POJO开 发 的 支 持,来 具 体 实 现 的;具 体 的 说,Spring通 过 为 应 用 开 发 提 供 基 于 POJO的
15、开 发 模 式,把 应 用 开 发 和 复 杂 的 Java EE服 务,实 现 解 耦,并 通 过 提 高 单 元 测 试 的 覆 盖 率,从 而 有 效 的 提 高 整 个 应 用 的 开 发 质 量。这 样 一 来,实 际 上,就 需 要 把 为 POJO提 供 支 持 的,各 种 Java EE服 务 支 持 抽 象 到 应 用 平 台 中 去,去 封 装 起 来;而 这 种 封 装 功 能 的 实 现,在 Spring中,就 是 由 IOC容 器 以 及 AOP来 具 体 提 供 的,这 两 个 模 块,在 很 大 程 度 上,体 现 了 Spring作 为 应 用 开 发 平 台
16、的 核 心 价 值。它 们 的 实 现,是 RodJohnson在 他 的 另 一 本 著 作 ExpertOne-on-One J2EE Development without EJB 中,所 提 到 W ithout E JB 设 计 思 想 的 体 现;同 时 也 深 刻 的 体 现 了 Spring背 后 的 设 计 理 念。从 更 深 一 点 的 技 术 层 面 上 来 看,因 为 Spring是 一 个 基 于 Java语 言 的 应 用 平 台,如 果 我 们 能 够 对 Java计 算 模 型,比 如 像 JVM虚 拟 机 实 现 技 术 的 基 本 原 理 有 一 些 了 解
17、,会 让 我 们 对 Spring实 现 的 理 解,更 加 的 深 入,这 些 JVM虚 拟 机 的 特 性 使 用,包 括 像 反 射 机 制,代 理 类,字 节 码 技 术 等 等。它 们 都 是 在 Spring实 现 中,涉 及 到 的 一 些 Java计 算 环 境 的 底 层 技 术;尽 管 对 应 用 开 发 人 员 来 说,可 能 不 会 直 接 去 涉 及 这 些 JVM虚 拟 机 底 层 实 现 的 工 作,但 是 了 解 这 些 背 景 知 识,或 多 或 少,对 我 们 了 解 整 个 Spring平 台 的 应 用 背 景 有 很 大 的 帮 助;打 个 比 方 来
18、 说,就 像 我 们 在 大 学 中,学 习 的 那 些 关 于 计 算 机 组 织 和 系 统 方 面 的 基 本 知 识,比 如 像 数 字 电 路,计 算 机 组 成 原 理,汇 编 语 言,操 作 系 统 等 等 这 些 基 本 课 程 的 学 习。虽 然,坦 率 的 来 说,对 我 们 这 些 大 多 数 课 程 的 学 习 者,在 以 后 的 工 作 中,可 能 并 没 有 太 多 的 机 会,直 接 从 事 这 么 如 此 底 层 的 技 术 开 发 工 作;但 具 备 这 些 知识 背 景,为 我 们 深 入 理 解 基 于 这 些 基 础 技 术 构 架 起 来 的 应 用
19、系 统,毫 无 疑 问,是 不 可 缺 少 的。随 着 JVM虚 拟 机 技 术 的 发 展,可 以 设 想 到 的 是,更 多 虚 拟 机 级 别 的 基 本 特 性,将 会 持 续 的 被 应 用 平 台 开 发 者 所 关 注 和 采 用,这 也 是 我 们 在 学 习 平 台 实 现 的 过 程 中,非 常 值 得 注 意 的 一 点,因 为 这 些 底 层 技 术 实 现,毫 无 疑 问,会 对 Spring应 用 平 台 的 开 发 路 线,产 品 策 略 产 生 重 大 的 影 响。同 时,在 使 用 Spring作 为 应 用 平 台 的 时 候,如 果 需 要 更 深 层 次
20、 的 开 发 和 性 能 调 优,这 些 底 层 的 知 识,也 是 我 们 知 识 库 中 不 可 缺 少 的 部 分。有 了 这 些 底 层 知 识,理 解 整 个 系 统,想 来 就 应 该 障 碍 不 大 了。IOC的 一 点 认 识 M Spring IOC的 理 解 离 不 开 对 依 赖 反 转 模 式 的 理 解,我 们 知 道,关 于 如 何 反 转 对 依 赖 的 控 制,把 控 制 权 从 具 体 业 务 对 象 手 中 转 交 到 平 台 或 者 框 架 中,是 解 决 面 向 对 象 系 统 设 计 复 杂 性 和 提 高 面 向 对 象 系 统 可 测 试 性 的
21、一 个 有 效 的 解 决 方 案。这 个 问 题 触 发 了 IoC设 计 模 式 的 发 展,是 IoC容 器 要 解 决 的 核 心 问 题。同 时,也 是 产 品 化 的 IoC容 器 出 现 的 推 动 力。而 我 觉 得 Spring的 IoC容 器,就 是 一 个 开 源 的 实 现 依 赖 反 转 模 式 的 产 品。那 具 体 什 么 是 IoC容 器 呢?它 在 Spring框 架 中 到 底 长 什 么 样?说 了 这 么 多,其 实 对 IoC容 器 的 使 用 者 来 说,我 们 常 常 接 触 到 的 BeanFactory和 Applicationcontext都
22、 可 以 看 成 是 容 器 的 具 体 表 现 形 式。这 些 就 是 IoC容 器,或 者 说 在 Spring中 提 IoC容 器,从 实 现 来 说,指 的 是 一 个 容 器 系 列。这 也 就 是 说,我 们 通 常 所 说 的 IoC容 器,如 果 深 入 到 Spring的 实 现 去 看,会 发 现 IoC容 器 实 际 上 代 表 着 一 系 列 功 能 各 异 的 容 器 产 品。只 是 容 器 的 功 能 有 大 有 小,有 各 自 的 特 点。打 个 比 方 来 说,就 像 是 百 货 商 店 里 出 售 的 商 品,我 们 举 水 桶 为 例 子,在 商 店 中 出
23、 售 的 水 桶 有 大 有 小;制 作 材 料 也 各 不 相 同,有 金 属 的,有 塑 料 的 等 等,总 之 是 各 式 各 样,但 只 要 能 装 水,具 备 水 桶 的 基 本 特 性,那 就 可 以 作 为 水 桶 来 出 售 来 让 用 户 使 用。这 在 Spring中 也 是 一 样,它 有 各 式 各 样 的 IoC容 器 的 实 现 供 用 户 选 择 和 使 用;使 用 什 么 样 的 容 器 完 全 取 决 于 用 户 的 需 要,但 在 使 用 之 前 如 果 能 够 了 解 容 器 的 基 本 情 况,那 会 对 容 器 的 使 用 是 非 常 有 帮 助 的;
24、就 像 我 们 在 购 买 商 品 时 进 行 的 对 商 品 的 考 察 和 挑 选 那 样。我 们 从 最 基 本 的 XmlBeanFactory看 起,它 是 容 器 系 列 的 最 底 层 实 现,这 个 容 器 的 实 现 与 我 们 在 Spring应 用 中 用 到 的 那 些 上 下 文 相 比,有 一 个 非 常 明 显 的 特 点,它 只 提 供 了 最 基 本 的 IoC容 器 的 功 能。从 它 的 名 字 中 可 以 看 出,这 个 IoC容 器 可 以 读 取 以 XML形 式 定 义 的 BeanDefinition.理 解 这 一 点 有 助 于 我 们 理
25、解 Applicationcontext与 基 本 的 BeanFactory之 间 的 区 别 和 联 系。我 们 可 以 认 为 直 接 的 BeanFactory实 现 是 IoC容 器 的 基 本 形 式,而 各 种 Applicationcontext的 实 现 是 IoC容 器 的 高 级 表 现 形 式。仔 细 阅 读 XmlBeanFactory的 源 码,在 一 开 始 的 注 释 里 面 已 经 对 XmlBeanFactory的 功 能 做 了 简 要 的 说 明,从 代 码 的 注 释 还 可 以 看 到,这 是 RodJohnson在 2001年 就 写 下 的 代
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Spring 技术 内幕 深入 解析 架构 设计 原理
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内