当前位置: 首页 > 知识库问答 >
问题:

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

晁开宇
2023-03-14

我有一个基于war的SpringWeb应用程序项目,该项目内部有多个jar文件。我正在使用maven设置来构建JAR和war文件。每个jar文件都有一组需要加载的bean,我不能这样做。

在每个jar文件中,我都定义了一个beans.xml文件。但是豆子不会自动上膛。我尝试加载beans.xml文件:a)src/main/Resources b)src/main/Resources/META-INF c)src/main/Resources/META-INF/Spring它不起作用。

我的问题:如何为这样的场景准备应用上下文?基于战争的应用程序与多个罐子。

共有3个答案

奚曦哲
2023-03-14

你提到beans.xml,这是一个CDI项目还是一个标准的Spring项目?

使用maven,src/main/资源下的所有内容都打包在JAR的顶层。因此,如果您在src/main/Resources/META-INF/beans.xml中有一个文件,那么您应该使用"/META-INF/beans.xml"加载它,或者在Spring上下文中将其定义为"classpath:/META-INF/beans.xml"。

傅涵忍
2023-03-14

尝试简单的导入资源="类路径*:/META-INF/beans.xml"/

其中每个jar包含beans.xmlMETA-INF文件夹下的文件。它将扫描每个jar并加载beans.xml文件,并基于这些XMLs文件创建bean。

方韬
2023-03-14

如果要将应用程序打包为webapp应用程序,则只需添加一个名为yourservletname servlet的文件。使用

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

下面是您的servletname servlet的工作方式。xml应该是这样的(为了简洁起见,xml名称空间和模式声明是通用的):

<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>

 类似资料:
  • 我有一个应用程序加载它的Spring上下文与XML配置。 上下文文件存储在jar的类路径中(在目录中)。 通过引入一个新bean,我想从同一存档的类路径中加载一个beanio映射文件。由于Tomcat在Eclipse中运行,这一切都很有吸引力,但当我将WAR文件部署到QA环境时,应用程序无法启动。 让我走代码: 然后是背景 然后呢?嗯...我已经通过首先解压war文件来双重检查构建的jar文件。都

  • 问题内容: 我需要从罐子中加载属性文件。该罐子包含在war文件中。这是结构 现在,我在一个servlet中编写了以下代码,如下所示: 但是上面的代码我得到流为空。如果我将属性文件放在ROOT.war / WEB- INF中,则可以正常工作。我有一个不错的主意,如果getResourceAsStream中的路径以“ /”开头,那么它将在上下文根目录中搜索资源。但是,如何读取位于jar的资源,该jar

  • 我正在尝试获得一个Spring Bootjar,该jar具有嵌入式Tomcat服务器,以便在运行时加载一个外部war。我正在尝试使用本文中所展示的技术来实现这一点。 Spring Boot应用程序中的容器bean: 当我启动Spring Boot container应用程序时,container bean定位warfile并将其添加到类路径中,但随后抛出一个ClassNotFoundExcepti

  • 我无法加载位于jar (project.service.jar)中的db.properties,它被war文件(project-web.war)引用。输出war将jar放在we b-INF/lib/project . service . jar中。rest war也使用jar,它使用jar中的一些服务。当战争开始时,我无法加载位于服务的jar文件中的db.properties。prop文件具有要在

  • 问题内容: 我试图在我的Java独立代码中使用来加载位于我的类路径中的jar文件内部的。 applicationContext.xml条目如下, 而且,当我尝试以这种方式加载bean时,我得到了。不能通过这种方式加载bean吗? jar文件作为maven依赖项添加到我的类路径中。当我在该项目的Eclipse中看到Java Build Path时,看到该jar链接为M2_REPO /…/.。 我以为