如何提升wordpress网站速度wordpress专题模板
2026/4/6 0:52:32 网站建设 项目流程
如何提升wordpress网站速度,wordpress专题模板,固安县城乡和住房建设局网站,移动商城搭建Spring的bean工厂后处理器和Bean后处理器 一、基本原理 1.1原理一 Spring 的后处理器是 Spring 对外开发的重要扩展点#xff0c;允许我们介入到 Bean 的整个实例化流程中来#xff0c;以达到动态注册 BeanDefinition#xff0c;动态修改 BeanDefinition#xff0c;以及…Spring的bean工厂后处理器和Bean后处理器一、基本原理1.1原理一Spring 的后处理器是 Spring 对外开发的重要扩展点允许我们介入到 Bean 的整个实例化流程中来以达到动态注册BeanDefinition动态修改 BeanDefinition以及动态修改 Bean 的作用。Spring 主要有两种后处理器BeanFactoryPostProcessorBean 工厂后处理器在 BeanDefinitionMap 填充完毕Bean 实例化之前执行BeanPostProcessorBean后处理器一般在Bean实例化之后填充到单例池 singletonObjects之前执行。1.2原理二BeanFactoryPostProcessor 是一个接口规范实现了该接口的类只要交由 Spring 容器管理的话那么 Spring 就会回调该接口的方法用于对 BeanDefinition 注册和修改的功能。publicinterfaceBeanFactoryPostProcessor{voidpostProcessBeanFactory(ConfigurableListableBeanFactorybeanFactory);}二、实验2.1验证原理二先定义一个类然后实现接口BeanFactoryPostProcessor重写其方法postProcessBeanFactorypackagecom.itheima.processor;importorg.springframework.beans.BeansException;importorg.springframework.beans.factory.BeanFactory;importorg.springframework.beans.factory.config.BeanDefinition;importorg.springframework.beans.factory.config.BeanFactoryPostProcessor;importorg.springframework.beans.factory.config.ConfigurableListableBeanFactory;publicclassMyBeanFactoryPostProcessorimplementsBeanFactoryPostProcessor{OverridepublicvoidpostProcessBeanFactory(ConfigurableListableBeanFactoryconfigurableListableBeanFactory)throwsBeansException{System.out.println(BeanFactoryMap填充完毕回调改方法);}}将这个类在applicationContext.xml文件中配置成为beanbeanclasscom.itheima.processor.MyBeanFactoryPostProcessor/bean结果综上所述原理二得证。2.2实验二通过ConfigurableListableBeanFactory获取到BeanDefinition然后修改权限名packagecom.itheima.processor;importorg.springframework.beans.BeansException;importorg.springframework.beans.factory.BeanFactory;importorg.springframework.beans.factory.config.BeanDefinition;importorg.springframework.beans.factory.config.BeanFactoryPostProcessor;importorg.springframework.beans.factory.config.ConfigurableListableBeanFactory;publicclassMyBeanFactoryPostProcessorimplementsBeanFactoryPostProcessor{OverridepublicvoidpostProcessBeanFactory(ConfigurableListableBeanFactoryconfigurableListableBeanFactory)throwsBeansException{System.out.println(BeanFactoryMap填充完毕回调改方法);BeanDefinitionbeanDefinitionconfigurableListableBeanFactory.getBeanDefinition(userService);// 修改全限制名beanDefinition.setBeanClassName(com.itheima.service.impl.UserServiceImpl2);}}结果2.3实验三通过BeanDefinition添加全限制定名上一个实验我们通过BeanDefinition实现了修改全限定名那么本实验将实现添加全限制定名通过前面的学习我们可以知道xml中的bean标签实际上是封装在一个BeanDefinition中的然后又将BeanDefinition封装成一个map使用时就直接遍历这个map然后通过反射最终是创建到单例池当的map中调用getBean方法时则最终从该 Map 集合中取出 Bean 实例对象返回。详细可以看我的这篇博文[https://blog.csdn.net/2301_80749359/article/details/157357240?fromshareblogdetailsharetypeblogdetailsharerId157357240sharereferPCsharesource2301_80749359sharefromfrom_link]。那么有添加全限定名我们就需要创建一个BeanDefinition下面是BeanDefinition的继承体系选中BeanDefinition按ctrlh可以查看在开发过程中我们一般是使用RootBeanDefinition所以直接new一个然后再为其设置全限定名BeanDefinitionbeanDefinitionnewRootBeanDefinition();beanDefinition.setBeanClassName(com.itheima.dao.impl.personDaoImpl);当有了BeanDefinition还不够按照流程我们还要将其放到BeanDefinition的map中如果直接运行我们会发现报错当然从错误信息我们不难发现是一个叫DefaultListableBeanFactory的类再调用getbean方法这启发我们使用DefaultListableBeanFactory来进行注册BeanDefinition而目前我们只有ConfigurableListableBeanFactory所以考虑将其强转为它的子类然后进行注册BeanDefinition到BeanDefinition的map中。DefaultListableBeanFactorydefaultListableBeanFactory(DefaultListableBeanFactory)configurableListableBeanFactory;defaultListableBeanFactory.registerBeanDefinition(personDao,beanDefinition);System.out.println(beanDefinition);增加完毕撒花^ ✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿ ✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询