链接的脚注[2]:
[2]:因为
<import/>元素的处理必须在调用BeanFactoryPostProcessors之前进行,这意味着即使PropertyPlaceholderConfigurer也无济于事。由于在容器刷新之前已配置了环境及其属性源集,因此可以针对环境解析元素中的占位符,而不会出现任何生命周期问题。
更新 :
根据PropertySourcesPlaceholderConfigurer的javadoc,
PropertySourcesPlaceholderConfigurera
BeanFactoryPostProcessor,所以脚注真正说的是,导入是 在
安装PropertySourcesPlaceholderConfigurer 之前 解决的,因此也 无法正常工作
(事实上,在
<import/>解决该问题时,配置器甚至可能无法是的,当安装它时,它将查看
Environment,但是您不能使用它来解析
<import/>,因为当时没有后处理器可运行。其中包括
PropertySourcesPlaceholderConfigurer。
基本上,Spring XML上下文设置大致是这样的:
- 上下文已创建。
Environment
被设置。- 读取XML(所有XML,必要时解析导入)。Bean定义已创建。
BeanFactoryPostProcessor
安装并调用,处理Bean定义。BeanPostProcessor
已安装。- 根据bean的定义实例化bean。BeanPostProcessor被应用。
这与导致类似问题的原因类似,该问题导致您无法使用
order许多后处理器的属性在a
BeanPostProccesor之前应用a
BeanFactoryPostProcessor(以执行诸如
PropertyPlaceholderConfigurer从a来创建占位符的 *** 作
@PersistenceContext):该行为在Spring应用程序上下文中进行了硬编码,因此您必须通过专门处理一些Spring类来解决此问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)