spring扩展点
所属分类 spring
浏览量 1321
主要提供两类扩展点 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 配置读取
为何要定投指数基金