关于Spring Beans 的理解
source link: https://blog.51cto.com/codeshallow/5701794
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
关于Spring Beans 的理解
精选 原创Spring Beans
1.什 么 是 Spring beans?
Spring beans 是 那 些 形 成 Spring 应 用 的 主 干 的 java 对象 。 它 们 被 Spring IOC 容 器 初 始 化 , 装 配 , 和 管 理 。 这
些 beans 通 过 容 器 中 配 置 的 元 数 据 创 建 。 比 如 , 以 XML文 件 中<bean/> 的 形 式 定 义 。
Spring 框 架 定 义 的 beans 都 是 单 件 beans。 在bean tag 中 有 个 属 性”singleton”, 如 果 它 被 赋 为TRUE,bean 就 是 单 件 , 否 则 就 是 一 个prototype bean。 默 认 是 TRUE, 所 以 所 有 在 Spring框 架 中 的 beans 缺 省 都 是 单 件 。
2. 一 个 Spring Bean 定 义 包 含 什 么 ?
一 个 Spring Bean 的 定 义 包 含 容 器 必 知 的 所 有 配 置 元 数据 , 包 括 如 何 创 建 一 个 bean, 它 的 生 命 周 期 详 情 及 它 的依 赖 。
3. 如 何 给 Spring 容 器 提 供 配 置 元 数 据?
这 里 有 三 种 重 要 的 方 法 给 Spring 容 器 提 供 配 置 元 数据 。
XML 配 置 文 件 。
基 于 注 解 的 配 置 。
基 于 java 的 配 置 。
4. 你 怎 样 定 义 类 的 作 用 域?
当 定 义 一 个<bean> 在 Spring 里 , 我 们 还 能 给 这 个bean 声 明 一 个 作 用 域 。 它 可 以 通 过 bean 定 义 中 的scope 属 性来 定 义 。
如 , 当 Spring 要 在 需 要 的 时 候 每 次生 产 一 个 新 的 bean 实 例 ,bean 的 scope 属 性 被 指 定 为prototype。
另 一 方 面 , 一 个 bean 每 次 使 用 的 时 候 必 须返 回 同 一 个 实 例 , 这 个 bean 的 scope 属 性 必 须 设 为
singleton。
5. 解 释 Spring 支 持 的 几 种 bean 的 作 用 域 。
Spring 框 架 支 持 以 下 五 种 bean 的 作 用 域 :
-
singleton : bean 在 每 个 Spring ioc 容 器 中 只 有 一 个 实例 。
-
prototype: 一 个 bean 的 定 义 可 以 有 多 个 实 例 。
-
request: 每 次 http 请 求 都 会 创 建 一 个 bean, 该 作 用域 仅 在 基 于 web 的 Spring ApplicationContext 情 形 下有 效 。
-
session: 在 一 个 HTTP Session 中 , 一 个 bean 定 义 对应 一 个 实 例 。 该 作 用 域 仅 在 基 于 web 的Spring ApplicationContext 情 形 下 有 效 。
-
global-session: 在 一 个 全 局 的 HTTP Session 中 , 一个 bean 定 义 对 应 一 个 实 例 。 该 作 用 域 仅 在 基 于 web 的Spring ApplicationContext 情 形 下 有 效 。缺 省 的 Spring bean 的 作 用 域 是 Singleton.
6.Spring 框 架 中 的 单 例 bean 是 线 程 安 全 的 吗?
不 ,Spring 框 架 中 的 单 例 bean 不 是 线 程 安 全 的 。
7. 解 释 Spring 框 架 中 bean 的 生 命 周 期 。
-
Spring 容 器 从 XML 文 件 中 读 取 bean 的 定 义 , 并 实 例化 bean。
-
Spring 根 据 bean 的 定 义 填 充 所 有 的 属 性 。
-
如 果 bean 实 现 了 BeanNameAware 接 口 ,Spring 传 递 bean 的 ID 到 setBeanName 方 法 。
-
如 果 Bean 实 现 了 BeanFactoryAware 接 口 , Spring传 递 beanfactory 给 setBeanFactory 方 法 。
-
如 果 有 任 何 与 bean 相 关 联 的 BeanPostProcessors,Spring 会 在 postProcesserBeforeInitialization()方 法内 调 用 它 们 。
-
如 果 bean 实 现 IntializingBean 了 , 调 用 它 的afterPropertySet 方 法 , 如 果 bean 声 明 了 初 始 化 方法 , 调 用 此 初 始 化 方 法 。
-
如 果 有 BeanPostProcessors 和 bean 关 联 , 这 些 bean的 postProcessAfterInitialization() 方 法 将 被 调 用 。
-
如 果 bean 实 现 了 DisposableBean, 它 将 调 用destroy()方 法 。
8. 哪 些 是 重 要 的 bean 生 命 周 期 方 法 ? 你 能 重 载 它 们吗 ?
有 两 个 重 要 的 bean 生 命 周 期 方 法 , 第 一 个 是 setup ,它 是 在 容 器 加 载 bean 的 时 候 被 调 用。
第 二 个 方 法 是teardown 它 是 在 容 器 卸 载 类 的 时 候 被 调 用 。
The bean 标 签 有 两 个 重 要 的 属 性 (init-method 和destroy-method) 。 用 它 们 你 可 以 自 己 定 制 初 始 化 和 注销 方 法 。 它 们 也 有 相 应 的 注 解 (@PostConstruct 和@PreDestroy) 。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK