Skip to main content

moregeek program

关于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) 。


©著作权归作者所有:来自51CTO博客作者浅羽技术的原创作品,请联系作者获取转载授权,否则将追究法律责任

关于sql优化,你需要掌握这些_浅羽技术的博客-多极客编程

1、一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 Mysql 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15 ? (1)如果表的类型是 MyISAM,那么是 18 因为 MyISAM 表会把自增主键的最大 ID 记录到数据文件里,重启 MySQL 自增主键的最大 ID 也不会丢失 (2)如果表的类型是 I

spring入门程序_mb62c3ac8538829的博客-多极客编程

 三.入门程序1.创建maven项目先新建一个空工程编辑编辑在工程中创建一个module:编辑编辑编辑编辑编辑2.添加spring框架核心jar包<!-- 导入spring的核心jar包 --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-

disruptor生产和消费模式详解及高级应用(并行模式)_博学谷狂野架构师的博客-多极客编程

小伙伴们大家好,昨天的文章,带着大家扒开了Disruptor华丽的外衣,最重要的是我们知道了Disruptor高性能的原因几个重要的原因, 引入环形的数组结构:数组元素不会被回收,避免频繁的GC, 无锁的设计:采用CAS无锁方式,保证线程的安全性 属性填充:通过添加额外的无用信息,避免伪共享问题 元素位置的定位:采用跟一致性哈希一样的方式,一个索引,进行自增 这篇文章就在上篇文章的基础上来点实

java 中的 request 和 response 详解_wx630f055ce23fc的博客-多极客编程

Request 对象和 Response 对象的原理 Request和 Response 对象是由服务器创建的。我们来使用它们 Request 对象是来获取请求消息, Response 对象是来设置响应消息。Request 对象request 对象继承体系结构ServletRequest -- 接口 | 继承HttpServletRequest -- 接口 | 实现org.apa

sql 时间范围和时间粒度_wx630f055ce23fc的博客-多极客编程

前言 使用 SQL 进行业务数据计算时,经常会遇到两个概念: 时间范围 和 时间粒度 。以 最近一天的每小时的用户访问人数 为例:最近一天是时间范围每小时是时间粒度常见的时间范围:最近五分钟、最近一小时、最近一天、最近一周、最近一月、最近一年、截止到今天、截止到本周、截止到本月、截止到今年。常见的时间粒度:五分钟、小时、天、周、月、年。大多数情况下,我们需要根据计算时间和时间范围,计算出业务数据的

mysql中dd::columns表结构转table过程以及应用_wx630f055ce23fc的博客-多极客编程

一、MySQL的dd表介绍二、代码跟踪三、知识应用四、总结一、MySQL的dd表介绍 MySQL的dd表是用来存放表结构和各种建表信息的,客户端建的表都存在mysql.table和mysql.columns表里,还有一个表mysql.column_type_elements比较特殊,用来存放SET和ENUM类型的字段集合值信息。看一下下面这张表的mysql.columns表和mysql.colum

关于sql优化,你需要掌握这些_浅羽技术的博客-多极客编程

1、一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 Mysql 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15 ? (1)如果表的类型是 MyISAM,那么是 18 因为 MyISAM 表会把自增主键的最大 ID 记录到数据文件里,重启 MySQL 自增主键的最大 ID 也不会丢失 (2)如果表的类型是 I

二叉排序树_wx619474981d7fe的博客-多极客编程

1 二叉排序树的定义果查找的数据集是有序线性表,并且是顺序存储的,查找可以用折半查找算法来实现,因为有序,在插入和删除操作上,就需要耗费大量的时间。假设现在我们的数据只有一个数{62,88,58,47,35,73,51,99,37,93}做查找,建立好的二叉排序树如图所示,62、88、58创建好后,下一个数47因比58小,是它的左子树,35是47的左子树,73比62大,但比88小,是88的左子树,

spring入门程序_mb62c3ac8538829的博客-多极客编程

 三.入门程序1.创建maven项目先新建一个空工程编辑编辑在工程中创建一个module:编辑编辑编辑编辑编辑2.添加spring框架核心jar包<!-- 导入spring的核心jar包 --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-

java 中的 request 和 response 详解_wx630f055ce23fc的博客-多极客编程

Request 对象和 Response 对象的原理 Request和 Response 对象是由服务器创建的。我们来使用它们 Request 对象是来获取请求消息, Response 对象是来设置响应消息。Request 对象request 对象继承体系结构ServletRequest -- 接口 | 继承HttpServletRequest -- 接口 | 实现org.apa

sql 时间范围和时间粒度_wx630f055ce23fc的博客-多极客编程

前言 使用 SQL 进行业务数据计算时,经常会遇到两个概念: 时间范围 和 时间粒度 。以 最近一天的每小时的用户访问人数 为例:最近一天是时间范围每小时是时间粒度常见的时间范围:最近五分钟、最近一小时、最近一天、最近一周、最近一月、最近一年、截止到今天、截止到本周、截止到本月、截止到今年。常见的时间粒度:五分钟、小时、天、周、月、年。大多数情况下,我们需要根据计算时间和时间范围,计算出业务数据的

mysql中dd::columns表结构转table过程以及应用_wx630f055ce23fc的博客-多极客编程

一、MySQL的dd表介绍二、代码跟踪三、知识应用四、总结一、MySQL的dd表介绍 MySQL的dd表是用来存放表结构和各种建表信息的,客户端建的表都存在mysql.table和mysql.columns表里,还有一个表mysql.column_type_elements比较特殊,用来存放SET和ENUM类型的字段集合值信息。看一下下面这张表的mysql.columns表和mysql.colum