使用 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,例如 test
、stage
、production
和不同的配置文件来激活它们。然后你有安全问题,因为你必须在定义中存储生产数据库 url。
这只是一个简单的例子,spring 本身使用了很多BeanFactoryPostProcessor
实现。检查他们通过
【讨论】:
以上是关于使用 Spring BeanFactoryPostProcessor 的真实世界优势的主要内容,如果未能解决你的问题,请参考以下文章
8 -- 深入使用Spring -- 7...1 启动Spring 容器