2012-06-18 126 views
0

有人可以解释Spring xml配置文件中bean初始化的顺序吗?在某些情况下,它似乎依赖于订单,但我无法找到任何指示这种情况的文档。当使用单个配置文件时,bean顺序似乎是独立的。但是,如果在父配置中重写bean,则顺序可能很重要。我需要做额外的测试来确认究竟是什么情况导致这种失败。我正在使用Spring 3.0.5,并使用配置文件在生产代码中用模拟实现覆盖bean。这些bean被自动装入服务中,并且模拟对象是为什么需要重写。任何有关这方面的见解将不胜感激。Spring XML初始化命令

回答

0

订购有时显著,我能想到的这些情况:后来用完全相同的名称定义

  1. 豆类覆盖前面定义的豆类 - 所以如果你有嘲笑了一些豆子,只是把它定义核心应用程序bean加载完成后。
  2. BeanFactoryPostProcessor和BeanPostProcessors根据其定义位置或基于order属性(如果存在)进行处理。
  3. AOP通知根据order属性执行。

您的情况似乎被第一点所覆盖,但我只是指定了其他人的完整性,肯定会有更多其他SO用户可以添加。

+0

我的mocked bean在子上下文中重写了父上下文中具有相同名称的bean。子上下文导入父项。我认为这意味着初始化父上下文,然后是子上下文,但似乎并非如此。你能澄清如何确保一个上下文文件在覆盖之前被完全加载吗? –

+0

如果你现在在子上下文中有一个带有bean1 - “'的'parent-context.xml'文件,你必须这样做:'“,所以现在在定义子bean之后导入父上下文,所以父bean将生效 –