首页   快速返回

spring扩展点     所属分类 spring
主要提供两类扩展点 BeanPostProcessor 和 BeanFactoryPostProcessor


BeanPostProcessor 操作bean实例
BeanFactoryPostProcessor 对bean的元数据定义进行扩展  BeanDefiniton


BeanFactoryPostProcessor

在容器加载bean定义之后,bean创建之前,修改bean的定义属性

可同时配置多个 ,并通过设置'order'属性或实现order接口来控制执行次序

public interface BeanFactoryPostProcessor {
    void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;
}

内置实现

org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
org.springframework.beans.factory.config.PropertyOverrideConfigurer
org.springframework.beans.factory.config.CustomEditorConfigurer  用来注册自定义的属性编辑器

CustomAutowireConfigurer

public abstract class PropertyResourceConfigurer extends PropertiesLoaderSupport
		implements BeanFactoryPostProcessor, PriorityOrdered

PropertySourceOrderingPostProcessor

ServletComponentRegisteringPostProcessor

新增一个字段

public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor{

   @Override
   public void postProcessBeanFactory(ConfigurableListableBeanFactory arg0)
         throws BeansException {
      BeanDefinition obj = arg0.getBeanDefinition("user0");
      MutablePropertyValues pv = obj.getPropertyValues();
      pv.add("testField", "testFieldValue");
   }
}



BeanPostProcessor public interface BeanPostProcessor{ public Object postProcessAfterInitialization(Object arg0, String arg1) throws BeansException ; public Object postProcessBeforeInitialization(Object arg0, String arg1) throws BeansException ; } 参数 和 返回值说明 容器创建的对象和beanName,返回值是经过定制的对象 内置BeanPostProcessor实现 譬如对 @PostConstruct 注解处理 aop动态代理处理 可以定义多个BeanPostProcessor,执行顺序通过实现Ordered接口来控制 public interface Ordered { // Higher values are interpreted as lower priority. int getOrder(); } ApplicationContextAwareProcessor ServletContextAwareProcessor WebServerFactoryCustomizerBeanPostProcessor BeanValidationPostProcessor

上一篇     下一篇
Hadoop不行了吗

java内存模型

spring和springboot发展历史

spring bean生命周期及扩展点

spring xml bean 配置读取

为何要定投指数基金