Spring 3.1 PropertySourcesPlaceholderConfigurer和条件导入

Spring 3.1 PropertySourcesPlaceholderConfigurer和条件导入,第1张

Spring 3.1 PropertySourcesPlaceholderConfigurer和条件导入

链接的脚注[2]:

[2]:因为

<import/>
元素的处理必须在调用BeanFactoryPostProcessors之前进行,这意味着即使PropertyPlaceholderConfigurer也无济于事。由于在容器刷新之前已配置了环境及其属性源集,因此可以针对环境解析元素中的占位符,而不会出现任何生命周期问题。

更新

根据PropertySourcesPlaceholderConfigurer的javadoc,

PropertySourcesPlaceholderConfigurer
a
BeanFactoryPostProcessor
,所以脚注真正说的是,导入是
安装PropertySourcesPlaceholderConfigurer 之前 解决的,因此也 无法正常工作
(事实上​​,在
<import/>
解决该问题时,配置器甚至可能无法是的,当安装它时,它将查看
Environment
,但是您不能使用它来解析
<import/>
,因为当时没有后处理器可运行。其中包括
PropertySourcesPlaceholderConfigurer

基本上,Spring XML上下文设置大致是这样的:

  1. 上下文已创建。
  2. Environment
    被设置。
  3. 读取XML(所有XML,必要时解析导入)。Bean定义已创建。
  4. BeanFactoryPostProcessor
    安装并调用,处理Bean定义。
  5. BeanPostProcessor
    已安装。
  6. 根据bean的定义实例化bean。BeanPostProcessor被应用。

这与导致类似问题的原因类似,该问题导致您无法使用

order
许多后处理器的属性在a
BeanPostProccesor
之前应用a
BeanFactoryPostProcessor
(以执行诸如
PropertyPlaceholderConfigurer
从a来创建占位符的 *** 作
@PersistenceContext
):该行为在Spring应用程序上下文中进行了硬编码,因此您必须通过专门处理一些Spring类来解决此问题。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5429970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存