超详细Spring、SpringBoot所有扩展点整理

欢迎来我博客阅读更多的文章~https://endwas.cn

spring中有太多的扩展点,总记得很零散,有些扩展点也只简单知道用途,不知其所以然,所以写篇博客总结归纳一下,如果有遗漏欢迎告知,会进行补充~

1.Spring中扩展点

1.BeanFactoryProcessor

容器扩展接口,调用时机在Spring读取BeanDefinition信息之后,实例化bean之前。
可用作修改已经注册的BeanDefinition,比如修改类的属性、是否懒加载、类名等。

/**
*	一个接口方法用于
**/
void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;
子接口 BeanDefinitionRegistryPostProcessor

这个接口也只有一个实现方法,这个方法参数是BeanDefinitionRegistry,我们的容器是实现了这个接口,所以可以对容器中的beandefinition进行增删查改。

void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException;

2.BeanPostProcessor

Bean的后置处理器,在bean的生命周期各个阶段起到扩展和应用,常见的应用有初始化前@postConstruct解析执行,初始化后aop的动态代理。

	/**
	*	初始化前的扩展
	**/
	@Nullable
	default Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
   
		return bean;
	}
	
	@Nullable
	default Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
   
		return bean;
	}

1.子接口InstantiationAwareBeanPostProcessor

Bean实例化处理器,相当于在创建这个bean的前后做扩展,在bean通过反射创建前后的扩展。

  • postProcessAfterInstantiation:注意它的返回值是boolean而不是obj,因为它的返回值是决定要不要调用postProcessPropertyValues方法。
  • postProcessProperties: 顾名思义处理属性值 作用:对属性值进行修改,如果postProcessAfterInstantiation方法返回false,该方法可能不会被调用。可以在该方法内对属性值进行修改。
	@Nullable
	default Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException {
   
		return null;
	}

	default boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException {
   
		return true;
	}

	@Nullable
	default 
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值