InitializingBean、@PostConstruct、@Bean(initMethod = “init“)和构造方法 执行优先级比较

InitializingBean

1、InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候都会执行该方法。
2、spring初始化bean的时候,如果bean实现了InitializingBean接口,会自动调用afterPropertiesSet方法。
3、在Spring初始化bean的时候,如果该bean实现了InitializingBean接口,并且同时在配置文件中指定了init-method,系统则是先调用afterPropertieSet()方法,然后再调用init-method中指定的方法。

1、Spring为bean提供了两种初始化bean的方式,实现InitializingBean接口,实现afterPropertiesSet方法,或者在配置文件中通过init-method指定,两种方式可以同时使用。
2、实现InitializingBean接口是直接调用afterPropertiesSet方法,比通过反射调用init-method指定的方法效率要高一点,但是init-method方式消除了对spring的依赖。
3、如果调用afterPropertiesSet方法时出错,则不调用init-method指定的方法

spring初始化bean有两种方式
第一:实现InitializingBean接口,继而实现afterPropertiesSet的方法
第二:反射原理,配置文件使用init-method标签直接注入bean

相同点: 实现注入bean的初始化。

不同点:
(1)实现的方式不一致。
(2)接口比配置效率高,但是配置消除了对spring的依赖。而实现InitializingBean接口依然采用对spring的依赖。

执行顺序优先级
构造方法 > postConstruct >afterPropertiesSet > init方法。

@Component
public class InitializingBeanTest implements InitializingBean {public InitializingBeanTest(){System.out.println("构造方法");}@Overridepublic void afterPropertiesSet() throws Exception {System.out.println("测试InitializingBean afterPropertiesSet");}@PostConstructpublic void testPostConstruct(){System.out.println("测试@PostConstruct");}public void init(){System.out.println("测试init方法执行...");}@Bean(initMethod = "init")public InitializingBeanTest test() {return new InitializingBeanTest();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/268281.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 7 镜像制作过程

首先准备两台电脑,一台作为样机,一台作为技术人员电脑,技术人员电脑安装了Windows AIK第一部分、系统安装配置1、安装Windows 7 操作系统,步骤略过2、启用Administrator,使用Administrator登陆,然后在控制面…

论文笔记——Deep Model Compression Distilling Knowledge from Noisy Teachers

论文地址:https://arxiv.org/abs/1610.09650 主要思想 这篇文章就是用teacher-student模型,用一个teacher模型来训练一个student模型,同时对teacher模型的输出结果加以噪声,然后来模拟多个teacher,这也是一种正则化的方…

mysql清空全表数据建议直接用truncate,效率上truncate远高于delete

如果是清空全表数据建议直接用truncate,效率上truncate远高于delete,应为truncate不走事务,不会锁表,也不会生产大量日志写入日志文件;truncate table table_name 后立刻释放磁盘空间,并重置auto_increment…

[你必须知道的css系列]第一回:丰富的利器终结篇:选择符的组合关系及选择符总结...

介绍了这么多选择符,其实选择符的使用最大的优势不是单枪匹马奋斗,而应该是针对不同的页面结构组合成各种方阵。其主要方式体现在针对性使用类选择符或者 ID选择符、选择符群组及选择符组合这3种方式。一、针对性使用类选择符或者 ID选择符主要作用于类选…

剑指offer之 旋转数组的最小数字

package Problem8; public class MinInReversingList { /* * 题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 * 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}…

SQL中delete和update后加 Limit是个好习惯

在业务场景要求高的数据库中,对于单条删除和更新操作,在 delete 和 update 后面加 limit 1 绝对是个好习惯。比如,在删除执行中,第一条就命中了删除行,如果 SQL 中有 limit 1;这时就 return 了,…

一个javascript框架应有的功能

一个人学许多东西,不等于他会很多东西,学了也会忘的,学了也不等于会运用,这时我们应该整一个很复杂的东西出来,那么就知道自己到底去到什么程度。基于这样的理由,我开始搞框架了,像我群里面的许…

appcan UI

appcan UI 公共类 ([appcanUI框架地址:](http://newdocx.appcan.cn/UI/source) .ub {display: -webkit-box !important;display: box !important;position: relative; }.ub-rev {-webkit-box-direction: reverse;box-direction: reverse; }.ub-fh {width…

sql表字段类型尽量使用数值替代字符串类型

尽量使用数值替代字符串类型 比如性别(sex):0代表女,1代表男;数据库没有布尔类型, mysql 推荐使用 tinyint 1:因为引擎在处理查询和连接时会逐个比较字符串中每一个字符; 2:而对于数字型而言只…

问题步骤记录器——“懒教师”的好帮手

场景:电话响,接通电话,电话另一端:我的电脑又怎么怎么了,为什么我的***弄不出那样的效果?请问***要怎样操作?感悟:虽然不是大虾,但由于众多同学当中,我仍然靠…

问题账户需求分析

材料: 某大银行的一位银行卡办公室的收账经理Liz遇到了一个问题。她每周都收到一份过期未付款的账户名单。这份报告已经从两年前的250个账户增加到现在的1250个账户。为了确定那些严重拖欠债务的账户,Liz需要通读这份报告。严重拖欠债务的账户由几个不同…

SQL优化技巧使用varchar代替char

一:varchar 变长字段按数据内容实际长度存储,存储空间小,可以节省存储空间; 二:char 按声明大小存储,不足补空格; 三:其次对于查询来说,在一个相对较小的字段内搜索&am…

显式调用构造函数产生的悲剧

昨天一个同学让我帮他调试程序,发现一个诡异的问题,明明一个类的私有成员被赋值了,但运行时却总是不定的值。仔细检查了好久,才发现原来他把构造函数当作普通函数进行了显式调用,结果产生了悲剧。将他的问题简单的抽象…

input输入框修改后自动跳到最后一个字符

<input class"m-form-control" onpaste"return false" placeholder"直播间名称" name"name" onkeyup"this.valuethis.value.replace(/[^\u4e00-\u9fa5|\u0000-\u00ff|\u3002|\uFF1F|\uFF01|\uff0c|\u3001|\uff1b|\uff1a|\u300…

CCNA配置试验之七 PPP中PAP和CHAP的验证

PPP支持NCPC&#xff08;网络控制协议&#xff09;和LCP&#xff08;链路控制协议&#xff09;PPP的验证方式分为PAP二次握手明文传输和CHAP三次握手密文传输。试验配置PAP和CHAP的验证&#xff1a;试验配置如下&#xff1a;R1&#xff08;CHAP&#xff09;Router>enRouter#…

sql优化批量插入性能提升

建议批量插入 批量提交 INSERT into book VALUES(5,"A"),(6,"B");多条提交 INSERT into book VALUES(5,"A"); INSERT into book VALUES(6,"B") 理由 默认新增SQL有事务控制&#xff0c;导致每条都需要事务开启和事务提交&#xff0…

2017.10.13java上机出现中的问题

此篇博文主要说明在这次上机中遇见的问题和解决方法。 实验一&#xff1a;计算机计算组合数 问题1&#xff1a;在递推的方法用杨辉三角计算中&#xff0c;我创建了二维数组&#xff0c;但二维数组的行和列数并不是m&#xff0c;而是m1&#xff0c;因为杨辉三角的第一行只有一个…

重装系统

终于重装了系统&#xff0c;装了几个软件还比较满意 一个没有广告的迅雷qq终于可以打开网页了完美解码可以硬解转载于:https://www.cnblogs.com/jetz/archive/2010/04/18/1714847.html

sql优化索引不宜建太多,一般5个以内

索引不宜太多&#xff0c;一般5个以内 索引并不是越多越好&#xff0c;虽其提高了查询的效率&#xff0c;但却会降低插入和更新的效率&#xff1b;索引可以理解为一个就是一张表&#xff0c;其可以存储数据&#xff0c;其数据就要占空间&#xff1b;索引表的数据是排序的&…

Unity3D学习(五):实现一个简单的视觉感知

前言 在很多第一人称或者第三人称射击游戏的单人模式中&#xff0c;玩家的乐趣往往来源于和各式各样的AI敌人的战斗。而战斗的爆发很多时候是因为这些AI在“看见”玩家后就会立即做出反应&#xff0c;比如开火、呼叫同伴、躲藏或者逃跑等。 所以这些AI到底是如何探测&#xff0…