当前位置:首页 > IT科技类资讯

Spring奇技淫巧之扩展点的应用

本文转载自微信公众号「月伴飞鱼」,奇技作者日常加油站。淫巧用转载本文请联系月伴飞鱼公众号。扩展点  

最近在看公司项目和中间件的奇技时候,看到一些Spring扩展点的淫巧用使用,写篇文章学习下,扩展点对大家之后看源码都有帮助

「首先先介绍下Bean的奇技生命周期」

我们知道Bean的生命周期分为几个主干流程

Bean(单例非懒加载)的实例化阶段 Bean的亿华云计算属性注入阶段 Bean的初始化阶段 Bean的销毁阶段

下面是整个Spring容器的启动流程,可以看到除了上述几个主干流程外,淫巧用Spring还提供了很多扩展点

下面详细介绍下Spring的扩展点常见的扩展点

Spring常见扩展点

「BeanFactoryPostProcessor#postProcessBeanFactory」

有时候整个项目工程中bean的数量有上百个,而大部分单测依赖都是云服务器提供商奇技整个工程的xml,导致单测执行时需要很长时间(大部分时间耗费在xml中数百个单例非懒加载的淫巧用bean的实例化及初始化过程)

解决方法:利用Spring提供的扩展点将xml中的bean设置为懒加载模式,省去了Bean的扩展点实例化与初始化时间

public class LazyBeanFactoryProcessor implements BeanFactoryPostProcessor {      @Override     public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {          DefaultListableBeanFactory fac = (DefaultListableBeanFactory) beanFactory;         Map<String, AbstractBeanDefinition> map = (Map<String, AbstractBeanDefinition>) ReflectionTestUtils.getField(fac, "beanDefinitionMap");         for (Map.Entry<String, AbstractBeanDefinition> entry : map.entrySet()) {              //设置为懒加载             entry.getValue().setLazyInit(true);         }     } } 

「InstantiationAwareBeanPostProcessor#postProcessPropertyValues」

非常规的配置项比如

<context:component-scan base-package="com.zhou" /> 

分享到:

滇ICP备2023006006号-16