Spring扩展分析

作者: 每天学点编程 | 来源:发表于2017-08-17 07:43 被阅读54次

获取spring的ApplicationContext几种方式

一种是实现ApplicationContextAware接口,一种是跟普通的自动注入一样。

下面是Spring高版本才提供的:


记住只能有一个构造函数,上面有两个构造函数是错误,随意删除一个即可。同时注意有User参数的构造函数,必须在Spring容器有User类型的对象才行。

探讨ApplicationContextAware的实现原理——BeanPostProcessor


记住一定要交给Spring管理。
BeanPostProcessor中的postProcessBeforeInitialization方法会在类实例化并且设置完属性之后调用,而postProcessAfterInitialization会在init方法调用之后调用。
现在写个例子来测试一下:

下面是一个Book类:


开始测试:

运行结果:


请注意输出,你看到的不是一次TestBeanPostProcessor相关方法的执行,而是三次,为什么?因为Spring也会初始化一些bean,在初始化这些Bean的时候也会调用实现BeanPostProcessor的类的相应方法。

探讨ApplicationContextAware的实现原理——BeanPostProcessor的用处——实现代理

下面是一个BeanPostProcessor接口的类:

请注意上面两个方法都返回另一个对象。
看看最后能不能返回LogDog2类型的对象。

探讨ApplicationContextAware的实现原理——使用BeanPostProcessor实现ApplicationContextAware

定义一个接口:

实现MyApplicationContextAware接口的Cat类:

MyApplicationContextBeanPostProcessor

这就是为什么只要实现一个接口就可以实现属性注入的原理:

相关文章

网友评论

    本文标题:Spring扩展分析

    本文链接:https://www.haomeiwen.com/subject/ppfgrxtx.html