Spring BPP中如何优雅的创建动态代理Bean详解

qqstrategy55120 12 0 pdf 2021-12-24 19:12:14

本文章所讲并没有基于Aspectj,而是直接通过Cglib以及ProxyFactoryBean去创建代理Bean。测试实体类,在BPP中创建BppTestDepBean类型的代理Bean。想必大家都知道@Autowired字段的处理也是通过一个BPP,不过这个BPP比我们平常使用的要高级一些,它就是InstantiationAwareBeanPostProcessor。InstantiationAwareBeanPostProcessor中有一个如下的方法,AutowiredAnnotationBeanPostProcessor就是覆盖这个方法实现了带有相关注解属性的自动注入。InstantiationAwareBeanPostProcessor的postProcessProperties方法实在Spring AbstractAutowireCapableBeanFactory的populateBean方法中被调用。上图代码,可以帮组我们实现非Spring容器Bean自动注入和初始化的功能。使用过Spring security同学都知道,内部也是用了这个方式解决对象中的属性注入问题。Spring security提供的AutowireBeanFactoryObjectPostProcessor这个工具类可以使这些对象具有容器bean同样的生命周期,也能注入相应的依赖,从而进入准备好被使用的状态。使用Cglib在InstantiationAwareBeanPostProcessor 中创建动态代理Bean。

Spring BPP中如何优雅的创建动态代理Bean详解

Spring BPP中如何优雅的创建动态代理Bean详解

Spring BPP中如何优雅的创建动态代理Bean详解

Spring BPP中如何优雅的创建动态代理Bean详解

Spring BPP中如何优雅的创建动态代理Bean详解

Spring BPP中如何优雅的创建动态代理Bean详解

Spring BPP中如何优雅的创建动态代理Bean详解

用户评论
请输入评论内容
评分:
暂无评论