【问题标题】:Refining a Spring Bean in a multi-module Maven project?在多模块 Maven 项目中优化 Spring Bean?
【发布时间】:2011-11-19 02:37:41
【问题描述】:

出于某种原因,我对此持空白。我有一个多模块 Spring/Maven 项目。在 module1 中,我定义了一个名为“info”的单例 bean,它在 module1 中工作得很好。

但是,此项目中的模块 2(依赖于模块 1)对“信息”bean 的属性值进行了改进。 Module2 的 Spring 配置已经包含 Module1 的配置。我应该使用什么 Spring 配置来设置此后续模块中定义的“信息”bean 的属性?

【问题讨论】:

  • 我很确定这是不可能的。我认为你能希望的最好的方法是创建具有不同 id 的新 bean,并将 parent 属性设置为你的原始 bean。然后,您必须确保将新 bean 设置到依赖它的 module2 bean 中。
  • 你是对的。我不得不重新设计这两个模块并采用新方法。谢谢。

标签: java spring configuration maven multi-module


【解决方案1】:

【讨论】:

  • 这与我需要的很接近,除了提供的值必须来自属性文件......我需要通过 Spring 表达式计算我的值。不过还是谢谢...这很高兴知道。
  • 好的,我必须说这是我知道的唯一方法。也许您需要编写自己的 bean 来负责覆盖属性。查看 PropertyOverrideConfigurer 中的 applyPropertyValue 方法。这就是你可以做到这一点的方式。
【解决方案2】:

在模块 2 中创建一个新的“信息”bean,根据模块 2 的需要对其进行配置。 你会在你的模块 2 配置中做这样的事情:

<import resource="classpath:/META-INF/module1-config.xml"/>
<bean name="info" class="Module1class"/>

这应该将正确的“信息”注入到依赖的 bean 中

【讨论】:

  • 当我这样做时,我的应用程序使用第二个“信息”bean,并且放入第一个信息 bean 的值不存在。换句话说,第二个 bean 定义只是创建了第二个 bean...替换第一个而不是更改某些值。
猜你喜欢
  • 2015-10-10
  • 2013-07-10
  • 2013-12-15
  • 2014-06-02
  • 2016-03-27
  • 2018-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多