gpt4 book ai didi

java - 如何安排 spring 上下文配置文件以匹配项目依赖项?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:59:52 26 4
gpt4 key购买 nike

我有一个网络应用程序依赖于另外两个模块。
为简单起见,我们称它们为 ServiceA模块和 ServiceB模块。
这些模块中的每一个都有各种不同的依赖关系,也有对 Entities 的共同依赖关系。模块。
上面提到的每个模块都声明了自己的 spring 上下文文件,其中包含与其范围有关的信息。
我现在正在尝试决定如何在项目之间“连接”这些配置文件,但我有点困惑。

我知道一种选择是在网络应用程序的 web.xml 中(在 contextConfigLocation 参数中)声明所有“结束”文件(即 ServiceA、ServiceB 和实体),但我不喜欢那样选项特别是因为我的实际用例更复杂并且具有更多共享的内部依赖项。

我的初衷是在contextConfigLocation中申报仅参数 ServiceA 的配置文件和 ServiceB因为这些是 Web 应用程序直接依赖的唯一项目(通过查看 Maven pom 很容易看出),然后同时拥有 ServiceAServiceB在他们的 spring 上下文配置文件中包含这个指令 <import resource="classpath:EntitiesContext.xml"> .这种方法的优点是它与 maven 传递方法一致,在这种方法中我声明我所依赖的东西,如果该模块依赖于某些东西,它会将它拖到一起。这种方法的问题是我读了 here Entities 中的所有 bean 模块将被创建两次(尽管最后只保留一个实例)这是一项昂贵且不必要的操作。

我非常想听听人们如何解决这个用例,因为我认为我没有遇到任何极端情况。

谢谢

更新我最终使用的语法是 classpath*:META-INF/*/*Context.xml因为 Thomasz 建议的语法存在一些问题。
如需更多阅读,请参阅 bug report Spring (部分解决了这个问题)和一个blog post关于这个问题

最佳答案

如何遵循一些配置文件的命名约定并简单地选择 CLASSPATH 上的所有可用文件?

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:*Context.xml
</param-value>
</context-param>

此解决方案假设显然所有必需的模块都在 CLASSPATH 上,但也假定非必需的模块不存在。

关于java - 如何安排 spring 上下文配置文件以匹配项目依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8382089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com