当前位置:
凯发k8官方网 >
前端技术
> javascript
>内容正文
javascript
spring beanpostprocessor接口详细使用 -凯发k8官方网
凯发k8官方网
收集整理的这篇文章主要介绍了
spring beanpostprocessor接口详细使用
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
beanpostprocessor接口简介
beanpostprocessor也称为bean后置处理器,它是spring中定义的接口,在spring容器的创建过程中(具体为bean初始化前后)会回调beanpostprocessor中定义的两个方法。
beanpostprocessor的具体代码如下:
public interface beanpostprocessor {//bean初始化之前@nullabledefault object postprocessbeforeinitialization(object bean, string beanname) throws beansexception {return bean;}//bean初始化之后@nullabledefault object postprocessafterinitialization(object bean, string beanname) throws beansexception {return bean;} }postprocessbeforeinitialization方法会在每一个bean对象的初始化方法调用之前回调;postprocessafterinitialization方法会在每个bean对象的初始化方法调用之后被回调。
这两个方法分别在init方法前后执行,需要注意一点,我们定义一个类实现了beanpostprocessor,默认是会对整个spring容器中所有的bean进行处理。
既然是默认全部处理,那么我们怎么确认我们需要处理的某个具体的bean呢?
可以看到方法中有两个参数。类型分别为object和string,第一个参数是每个bean的实例,第二个参数是每个bean的name或者id属性的值。所以我们可以第二个参数,来确认我们将要处理的具体的bean。
beanpostprocessor示例
创建user对象
public class user implements initializingbean, disposablebean {public user() {system.out.println("实例化user构造方法...");}public void inituser() {system.out.println("user初始化方法inituser...");}public void destroyuser() {system.out.println("user销毁方法destroyuser...");}@overridepublic void destroy() throws exception {system.out.println("调用实现disposablebean的destroy方法....");}@overridepublic void afterpropertiesset() throws exception {system.out.println("调用实现initializingbean的afterpropertiesset方法......");} }beanpostprocessor实现类
public class userpostprocessor implements beanpostprocessor {public object postprocessbeforeinitialization(object bean, string beanname)throws beansexception {// 这边只做简单打印 原样返回beansystem.out.println("postprocessbeforeinitialization===="beanname);return bean;}public object postprocessafterinitialization(object bean, string beanname)throws beansexception {// 这边只做简单打印 原样返回beansystem.out.println("postprocessafterinitialization===="beanname);return bean;}}配置文件userconfig
@configuration public class userconfig {@bean(initmethod = "inituser",destroymethod = "destroyuser")public user user() {return new user();}@beanpublic userpostprocessor userpostprocessor() {return new userpostprocessor();} }测试类
public class test {public static void main(string[] args) {applicationcontext applicationcontext = new annotationconfigapplicationcontext(userconfig.class);((annotationconfigapplicationcontext) applicationcontext).close();} }执行结果:
实例化user构造方法... postprocessbeforeinitialization====user 调用实现initializingbean的afterpropertiesset方法...... user初始化方法inituser... postprocessafterinitialization====user 19:57:17.700 [main] debug org.springframework.context.annotation.annotationconfigapplicationcontext - closing org.springframework.context.annotation.annotationconfigapplicationcontext@2437c6dc, started on tue oct 22 19:57:17 cst 2019 调用实现disposablebean的destroy方法.... user销毁方法destroyuser...总结
以上是凯发k8官方网为你收集整理的spring beanpostprocessor接口详细使用的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: spring beanfactorypo
- 下一篇: