博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring中afterPropertiesSet方法与init-method配置描述
阅读量:5038 次
发布时间:2019-06-12

本文共 1769 字,大约阅读时间需要 5 分钟。

spring中afterPropertiesSet方法与init-method配置描述1. InitializingBean.afterPropertiesSet()Spring中InitializingBean接口类为bean提供了定义初始化方法的方式,它仅仅包含一个方法:afterPropertiesSet()。Bean实现这个接口,在afterPropertiesSet()中编写初始化代码:在xml配置文件中并不需要对bean进行特殊的配置,Spring在在配置文件完成该bean的所有赋值后,会检查该bean是否实现了InitializingBean接口,如果实现就调用bean的afterPropertiesSet方法。2. init-method配置Spring虽然可以通过InitializingBean完成一个bean初始化后调用这个bean自定义方法,但是这种方式要求bean实现InitializingBean接口。一但bean实现了InitializingBean接口,那么这个bean的代码就和Spring耦合到一起了。可以使用Spring提供的init-method的功能来执行一个bean自定义的初始化方法。以下代码中,类MonitorKafka不实现任何Spring的接口,定义一个没有参数的方法monitorKafkaMsg()。注:destroy-method是该bean销毁前调用指定的方法。init-method配置中的monitorKafkaMsg()方法将会在该bean初始化完成后被调用,Spring要求init-method是一个无参数的方法,否则会抛出异常,Spring将中止这个Bean的后续处理,并且抛出一个 org.springframework.beans.factory.BeanCreationException异常。总结:1. InitializingBean和init-method可以一起使用,Spring会先处理InitializingBean再处理init-method。init-method是通过反射执行的,而afterPropertiesSet是直接执行的,所以 afterPropertiesSet的执行效率比init-method要高,不过init-method消除了bean对Spring依赖,推荐使用init-method。2. 如果一个bean被定义为非单例的,那么afterPropertiesSet和init-method在bean的每一个实例被创建时都会执行。单例bean的afterPropertiesSet和init-method只在bean第一次被实例时调用一次。 一般情况下afterPropertiesSet和init-method都应用在单例的bean上。3. @PostConstruct和@PreDestory可以通过在类方法上注解方式实现类似的功能。package com.wiley.beginningspring.exercises.ch2;import javax.annotation.PostConstruct;import org.springframework.beans.factory.InitializingBean;public class Foo implements InitializingBean {@Overridepublic void afterPropertiesSet() throws Exception {  System.out.println("afterPropertiesSet method is called");}@PostConstructpublic void init() {  System.out.println("init method is called");}    public void initialize() {        System.out.println("initialize method is called");    }}

 

转载于:https://www.cnblogs.com/MaxLife/p/8758930.html

你可能感兴趣的文章
ecshop 系统信息在哪个页面
查看>>
【转】码云source tree 提交超过100m 为什么大文件推不上去
查看>>
Oracle数据库的增、删、改、查
查看>>
阿里市值超越亚马逊 马云开启下半场技术理想
查看>>
MySql执行分析
查看>>
git使用中的问题
查看>>
yaml文件 .yml
查看>>
linux字符集修改
查看>>
phpcms 添加自定义表单 留言
查看>>
mysql 优化
查看>>
读书笔记 ~ Nmap渗透测试指南
查看>>
WCF 配置文件
查看>>
动态调用WCF服务
查看>>
oracle导出/导入 expdp/impdp
查看>>
类指针
查看>>
css修改滚动条样式
查看>>
2018.11.15 Nginx服务器的使用
查看>>
Kinect人机交互开发实践
查看>>
百度编辑器UEditor ASP.NET示例Demo 分类: ASP.NET...
查看>>
JAVA 技术类分享(二)
查看>>