博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring源码窥探之:BeanPostProcessor
阅读量:4647 次
发布时间:2019-06-09

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

Spring的Bean后置处理器

1. 实体类

/** * @author 70KG * @Title: Train * @Description: * @date 2018/7/23下午11:31 * @From www.nmyswls.com */public class Train {    public Train() {        System.out.println("Train构造方法执行。。。。。。");    }    public void init() {        System.out.println("Train的init方法执行。。。。。。");    }    public void destroy() {        System.out.println("Train的destroy方法执行。。。。。。");    }}

2. 配置类

⚠️加上对实现类的扫描

/** * @author 70KG * @Title: config * @Description: * @date 2018/7/23下午11:31 * @From www.nmyswls.com */@Configuration@ComponentScan("com.nmys.story.springCore.springioc.beanpostprocessor_")public class Config01 {    @Bean(initMethod = "init",destroyMethod = "destroy")    public Train train(){        return new Train();    }}

3. BeanPostProcessor的实现类

⚠️加上@Component注解,目的为了让spring来管理这个实现类

/** * @author 70KG * @Title: BeanPostProcessorImpl * @Description: bean的后置处理器 * @date 2018/7/23下午11:31 * @From www.nmyswls.com */@Componentpublic class BeanPostProcessorImpl implements BeanPostProcessor {    @Override    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {        // 返回一个传过来的对象        // 在初始化方法调用之前进行后置处理工作        // 什么时候调用呢?在init-method方法之前就调用了        System.out.println("postProcessBeforeInitialization======" + beanName + "======" + bean);        return bean;    }    @Override    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {        System.out.println("postProcessAfterInitialization======" + beanName + "======" + bean);        return bean;    }}

4. 测试

/** * @author 70KG * @Title: FutureTaskTest * @Description: * @date 2018/7/23下午11:31 * @From www.nmyswls.com */public class Test01 {    @Test    public void test() {        AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(Config01.class);        ac.close();    }}

5. 结果

Train构造方法执行。。。。。。postProcessBeforeInitialization======train======com.nmys.story.springCore.springioc.beanpostprocessor_.Train@3b69e7d1Train的init方法执行。。。。。。postProcessAfterInitialization======train======com.nmys.story.springCore.springioc.beanpostprocessor_.Train@3b69e7d1Train的destroy方法执行。。。。。。

 

BeanPostProcessor主要是在类初始化之前,跟之后处理相应的事。

转载于:https://www.cnblogs.com/zhangjianbing/p/9823244.html

你可能感兴趣的文章
获得屏幕像素以及像素密度
查看>>
int与string转换
查看>>
adb命令 判断锁屏
查看>>
推荐一个MacOS苹果电脑系统解压缩软件
查看>>
1035等差数列末项计算
查看>>
CDMA鉴权
查看>>
ASP.NET MVC Identity 兩個多個連接字符串問題解決一例
查看>>
过滤器与拦截器区别
查看>>
USACO 1.5.4 Checker Challenge
查看>>
第二阶段站立会议7
查看>>
[18]Debian Linux Install GNU GCC Compiler and Development Environment
查看>>
JAVA多线程
查看>>
ACE(Adaptive Communication Environment)介绍
查看>>
delphi 更改DBGrid 颜色技巧
查看>>
python编码问题
查看>>
POJ 2031 Building a Space Station
查看>>
面向对象1
查看>>
编程开发之--java多线程学习总结(5)
查看>>
register_globals(全局变量注册开关)
查看>>
as3调用外部swf里的类的方法
查看>>