spring @Bean和@Order 官方doc理解
今天阅读了spring的官方代码,(大概)理解了@Bean和@Order如何使用。
@Bean 官方代码解读:
0、@Bean的注入,用于表示这个bean被spring容器管理(创建、销毁)(官方英文:Indicates that a method produces a bean to be managed by the Spring container.
)。
1、如果有相同的bean,需要在每个bean上加上@Qualify 注解
2、单例的bean不受@Order注解影响,只会受其本身的bean依赖关系和依赖的影响
3、@Configuration 不能用final 和static修饰,因为这些最初的spring JavaConfig要求CGLIB在运行时对每个Config进行子类化
4、bean默认模式下,是通过注解来自动注入的。但是允许外部条件的注入,如name还有type
5、@Bean用于ApplicationContext,JDBC,SqlSession 的close方法的时候,close方法必须是公有并且没有参数的,这个close()可能会抛出异常,需要try catch
6、禁用一个Bean的destroy()(销毁)方法,可以声明其value为"",空字符串。org.springframework.beans.factory.DisposableBean 会检查和校验destroy()的调用。换而言之,value为""的destroy方法,只会影响自定义的close()、shutdown()、java.io.Closeable、java.lang.AutoCloseable 声明的close(),比如在继承java.io.Closeable、java.lang.AutoCloseable后的重载close()。 注意销毁的方法只在那些生命周期完全由工厂掌握(包括但不限于单例模式)下才会被执行。
@Order 解读。
1、@Order 是一个可选择的,代表接口的排序值。越低的数值代表越高的等级。默认值是最大的值,也就是Integer.Max_VALUE=0x7fffffff
2、从spring 4.0开始,@Order 可以支持多种组件,包括集合中的组件注入。@Order 将会影响注入点的顺序。换句话说,也就是影响组件的注入顺序。但是@Order不影响单例的bean,单例的bean只受依赖关系和依赖的影响。(@Bean也是不影响单例的bean)
以上就是我的对官方源码的解读。本人是.NET转java的新人,如果有错,请各位大牛指出。
spring @Bean和@Order 官方doc理解的更多相关文章
- Spring 以及 Spring MVC Bean元素以及@Bean (Bean 等价于 注解 ??? 没理解错误吧)
①.由衷鸣谢Bossen <还是没看懂o(╥﹏╥)o><> {声明Spring Bean和注入Bean的几种常用注解和区别} Bean在Spring和SpringMVC中无所不 ...
- spring @bean 的理解
1.spring @bean 注解只能注解到方法上 2. 该方法必须返回一个实例对象 3.该过程相当于,通过一个方法去构造一个实例对象 ,然后交给spring管理 4.使用场景 如需要构造出一个特 ...
- Spring bean是如何加载的
Spring bean是如何加载的 加载bean的主要逻辑 在AbstractBeanFactory中doGetBean对加载bean的不同情况进行拆分处理,并做了部分准备工作 具体如下 获取原始be ...
- Spring Bean注册解析(一)
Spring是通过IoC容器对Bean进行管理的,而Bean的初始化主要分为两个过程:Bean的注册和Bean实例化.Bean的注册主要是指Spring通过读取配置文件获取各个bean的 ...
- Spring Bean 生命周期之“我从哪里来?” 懂得这个很重要
Spring bean 的生命周期很容易理解.实例化 bean 时,可能需要执行一些初始化以使其进入可用 (Ready for Use)状态.类似地,当不再需要 bean 并将其从容器中移除时,可能需 ...
- Spring bean的作用域以及生命周期
一.request与session的区别 request简介 request范围较小一些,只是一个请求. request对象的生命周期是针对一个客户端(说确切点就是一个浏览器应用程序)的一次请求,当请 ...
- Spring4- 01 - Spring框架简介及官方压缩包目录介绍- Spring IoC 的概念 - Spring hello world环境搭建
一. Spring 框架简介及官方压缩包目录介绍 主要发明者:Rod Johnson 轮子理论推崇者: 2.1 轮子理论:不用重复发明轮子. 2.2 IT 行业:直接使用写好的代码. Spring 框 ...
- Spring入门篇——第4章 Spring Bean装配(下)
第4章 Spring Bean装配(下) 介绍Bean的注解实现,Autowired注解说明,基于java的容器注解说明,以及Spring对JSR支持的说明 4-1 Spring Bean装配之Bea ...
- Spring 学习笔记(2) Spring Bean
一.IoC 容器 IoC 容器是 Spring 的核心,Spring 通过 IoC 容器来管理对象的实例化和初始化(这些对象就是 Spring Bean),以及对象从创建到销毁的整个生命周期.也就是管 ...
随机推荐
- 国产BI报表工具中低调的优秀“模范生”——思迈特软件Smartbi
首先简单来介绍一下这位低调且优秀的模范生--思迈特软件Smartbi.思迈特Smartbi是企业级商业智能BI和大数据分析品牌,满足用户在企业级报表.数据可视化分析.自助分析平台.数据挖掘建模.AI智 ...
- linux设置 自定义脚本开机启动
本文原创,转载请标明出处 https://blog.csdn.net/qq2531246791/article/details/89036084 一. 赋予可执行权限 chmod +x /etc/rc ...
- 禁用所有控制台console.log()打印
在前端dev的环境下,经常会用到console.log()进行调试,以方便开发, 而在产品release的版本中,又不合适在浏览器的console中输出那么多的调试信息. 但是会经常因为没有删除这些开 ...
- MySQL第三讲
昨日内容回顾 公钥私钥 数据库存储引擎 MyISAM 是5.5版本之前默认的存储引擎 存取数据的速度较快.但是安全性偏差 三个文件 结构.索引.数据 InnoDB 5.5版本及之后默认的存储引擎 存取 ...
- quartz框架(七)-JobStore
JobStore 在之前的博文中,博主已经写了关于Job的相关内容.本篇博文,博主将介绍JobStore相关的内容. JobStore是存放Job和Trigger的地方.当我们调用Scheduler对 ...
- 微信小程序逐屏分页刷新
wxml: <view class="page-section-spacing"> <view> <text>商家列表</text> ...
- Laravel自定义错误提示,自定义异常类提示,自定义错误返回信息,自定义错误页面
方法一 新增CustomException.php文件 App\Exceptions\CustomException.php <?php namespace App\Exceptions; us ...
- Django-Multitenant,分布式多租户数据库项目实战(Python/Django+Postgres+Citus)
Python/Django 支持分布式多租户数据库,如 Postgres+Citus. 通过将租户上下文添加到您的查询来实现轻松横向扩展,使数据库(例如 Citus)能够有效地将查询路由到正确的数据库 ...
- mybatis的几种like查询
oracle数据库: Java代码 SELECT * FROM user WHERE name like CONCAT('%',#{name},'%') 或 Java代码 SELECT * FROM ...
- 基于EMR离线数据分析-反馈有礼
"云上漫步"第三期-反馈有礼 参与体验产品,提交反馈,就有机会获得定制背包,T恤,超萌虎年鼠标垫,以及5到100元阿里云通用代金券~ 反馈地址: https://developer ...