使用 Spring BeanFactoryPostProcessor 的真实世界优势

Posted

技术标签:

【中文标题】使用 Spring BeanFactoryPostProcessor 的真实世界优势【英文标题】:Real world advantage of using Spring BeanFactoryPostProcessor 【发布时间】:2020-11-07 12:43:58 【问题描述】:

我了解 BeanFactoryPostProcessor 的用法,我们可以通过编写实现 BeanFactoryPostProcessor 的自定义类来修改 bean 定义的元数据。但是当我可以在 spring xml 本身中简单地更改元数据值时,我无法理解通过 BeanFactoryPostProcessor 更改元数据值的原因或优势是什么。

【问题讨论】:

【参考方案1】:

你可能想修改你拉入的库中的 spring 配置并且无法控制:)

【讨论】:

【参考方案2】: 让我们以PropertyPlaceholderConfigurer BeanFactoryPostProcessor 为例,它是spring 本身使用的。它允许在成为具体的 bean 定义之前修改以下 bean 定义(即$jdbc.url 替换为正确的值)
   <bean id="dataSource">
     <property name="url" value="$jdbc.url" />
   </bean>

没有它,您必须为每个环境定义许多不同的 bean,例如 teststageproduction 和不同的配置文件来激活它们。然后你有安全问题,因为你必须在定义中存储生产数据库 url。

这只是一个简单的例子,spring 本身使用了很多BeanFactoryPostProcessor 实现。检查他们通过

【讨论】:

以上是关于使用 Spring BeanFactoryPostProcessor 的真实世界优势的主要内容,如果未能解决你的问题,请参考以下文章

spring 使用Spring表达式(Spring EL)

8 -- 深入使用Spring -- 7...1 启动Spring 容器

spring基础之二-;Spring IOC基本使用

Spring学习-----Spring使用@Autowired注解自动装配

Spring-使用JAVA的方式配置Spring-代理模式

Spring使用指南 ~ 5Spring AOP 使用简介