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选择符主要作用于类选…

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

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

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

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

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

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

sql优化批量插入性能提升

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

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

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

BeanFactory中String FACTORY_BEAN_PREFIX = ““;解析

此接口定义了Bean的一些基本信息判断和获取bean比如 isSingleton isTypeMatch 还有一个需要注意的地方,看这个常量: String FACTORY_BEAN_PREFIX "&"; 如果我们在获取Bean的时候,使用&则获取的是FactoryBean本身对象,否则…

.NET Core简介

转载于:https://www.cnblogs.com/wxc-kingsley/p/7660878.html

spring中DefaultListableBeanFactory是bean加载的核心部分,是spring注册和加载bean的默认实现方式

DefaultListableBeanFactory介绍 BeanFactory是个Factory,也就是IOC容器或对象工厂,而DefaultListableBeanFactory是Bean工厂的一个默认实现,DefaultListableBeanFactory提供了原始的BeanFactory的功能,如:对外提供ge…

使用MyBatis集成阿里巴巴druid连接池(不使用spring)

在工作中发现mybatis默认的连接池POOLED,运行时间长了会报莫名其妙的连接失败错误。因此采用阿里巴巴的Druid数据源(码云链接 ,中文文档链接)。 mybatis更多数据源参考博客链接 。 1 环境 eclipse mars2 maven3.3.9 mysql5.7 2 …

docker search从Docker Hub查找(搜索)镜像

镜像搜索 docker search 名称 列表说明:NAME:镜像名(镜像仓库源的名称)DESCRIPTION:对该镜像的描述STARS:类似 Github 里面的 star,表示点赞、喜欢的意思OFFICIAL:是否 docker 官方发布AUTOMATED&#xff1…

mysql求差集

mysql怎么求差集? mysql如何查询两个字段数不同的表中数据不一致的记录 一般可用NOT EXISTS(非存在子句)或 LEFT JOIN左(右)连接后所产生空字段值来筛选两表的差集 classinfo表 student表 1、NOT EXISTS not exists在比对字段…

html5表单实现简单计算器

html5表单实现简单计算器 <!DOCTYPE html><html><head> <title>this is a html page</title></head><body> <form οninput"res.value n1.valueAsNumber * n2.valueAsNumber"> <input type"number" …

python学习笔记(15)循环设计

python学习笔记&#xff08;15&#xff09;循环设计 原链&#xff1a;http://www.cnblogs.com/vamei/archive/2012/07/09/2582435.html 注意&#xff1a;zip()在python2 3里面不一致 #第15讲 循环设计#循环在前面是有学习的&#xff0c;简单的循环for i in range(10):print (i*…

docker search 镜像关键词

查找镜像 docker search 镜像关键词 比如我要搜索nginx docker search nginx 参数说明&#xff1a; NAME: 镜像仓库源的名称 DESCRIPTION: 镜像的描述 OFFICIAL: 是否 docker 官方发布 stars: 类似 Github 里面的 star&#xff0c;表示点赞、喜欢的意思。 AUTOMATED: …