gpt4 book ai didi

java - 如何在基于 war 的应用程序中为多个 jar 文件加载 spring bean

转载 作者:行者123 更新时间:2023-11-29 05:11:12 25 4
gpt4 key购买 nike

我有一个基于 war 的 spring web 应用程序项目,它内部有多个 jar 文件。我正在使用 Maven 安装程序来构建 jar 和 war 文件。每个 jar 文件都有一组需要加载的 bean,但我无法加载。

在每个 jar 文件中我都定义了一个 beans.xml 文件。但是 bean 不会自动加载。我尝试从以下位置加载 beans.xml 文件:一)源代码/主要/资源b) src/main/resources/META-INFc)src/main/resources/META-INF/spring它不起作用。

我的问题:如何为这种场景准备应用上下文?具有多个 jar 的基于 war 的应用程序。

最佳答案

如果您将应用程序打包为 Web 应用程序,那么您只需添加一个名为 yourservletname-servlet.xml 的文件,并使用 <import /> 包含来自您的 jar 文件的所有资源。元素。

Spring,在幕后,将扫描上面提到的文件by default包括在导入的文件中声明的所有 bean。

这是您的 servletname-servlet.xml 的样子(为简洁起见省略了 xml namespace 和模式声明):

<beans>
<import resource="classpath:/META-INF/beans.xml"/>
</beans>

我建议使用 META-INF 作为您的上下文配置文件位置。

这将扫描类路径根目录下 META-INF 文件夹下所有名为 beans.xml 的 bean 声明文件,假定这些文件必须 当使用 Maven 作为构建工具时,在项目结构中的 src/main/resources/META-INF/ 下(这样它们可以直接复制到 jar_root_path/META-INF/下)。

否则,如果您没有使用默认的 -servlet.xml 文件,您可以使用 contextConfigLocation 指定自定义应用程序上下文描述符。如下:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>application-context.xml</param-value>
</context-param>

关于java - 如何在基于 war 的应用程序中为多个 jar 文件加载 spring bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28408436/

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