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

Spring Boot-加载applicationContext。外部目录中的xml

燕元明
2023-03-14

我要求我的项目从外部目录加载应用程序上下文bean(它应该通过Java程序参数或“类路径”参数等进行管理)。这个想法是使用gradle创建的JAR不包含Application ationContext.xml,因此可以在不重新构建JAR的情况下更新/替换它。我的Spring Boot应用程序类如下所示:

@SpringBootApplication
@ImportResource({"classpath:applicationContext.xml"})
public class SampleApplication {

    public static void main(String[] args) {
        SpringApplication.run(SampleApplication.class, args);
    }
}

我的问题是如何实现这一点?我尝试将-classpath参数设置为目录位置,但它不起作用。我在应用程序启动时遇到异常(当我尝试执行JAR时):

java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist

共有2个答案

东门秦迟
2023-03-14

要从外部目录加载applicationContext,请使用

@SpringBootApplication
@ImportResource({"file:/yourfullpath/applicationContext.xml"})
public class SampleApplication {

   public static void main(String[] args) {
      SpringApplication.run(SampleApplication.class, args);
  }
}
闻人冷勋
2023-03-14

首先检查类路径的实际外观。您可以通过以下方式完成:

System.out.println(System.getProperty("java.class.path"));

并且检查目录的路径是否已满(或从您启动java命令的相对路径)。

如果没事的话

在主类而不是

SpringApplication.run(SampleApplication.class, args);

尝试

new SampleApplication().configure(new SpringApplicationBuilder(SampleApplication.class)).run(args);
 类似资料:
  • 我有一个带有spring boot的java项目,我需要加载应用程序。外部文件夹中的属性和依赖项jar。 我使用该应用程序进行了测试。类路径和加载程序中的属性。路径属性工作正常。 当我使用外部属性文件(我确信它们已被使用)时,加载程序。路径工作不正常,结果为ClassNotFound,因为JAR未加载。 此外,当我启动应用程序与**-Dloader.path=**xxx它的工作正常。 如何使用外部

  • 以下是错误消息 java.lang.IllegalStateException:无法加载ApplicationContext 一个使用elasticSearch、mysql、redis等的Spingboot项目,谷歌有很多,但他只是一个新的Spingboot。网上的东西不管用。我不知道怎么改。 application-local.yml 应与ES的配置相关 控制器

  • 我试图使用Junit5为特定的服务类创建单元/集成测试,以避免整个项目过载。 测试类: 错误: 2019-04-03 14:56:06.146警告732---[main]O.S.W.C.S.GenericWebApplicationContext:上下文初始化过程中遇到异常-取消刷新尝试:org.springframework.beans.factory.unsatisfiedDependency

  • 现有一个springboot项目,通过扫描二维码查询信息,比如一棵树,扫描二维码后可以看到他相关的信息。但这个项目不止有树类型,还有道路,某个物品。所以将项目分模块开发,核心模块作为一个jar包,复制提供基础服务如数据导入导出。各类型构建成单独的jar。部署时需要那种类型就加载对应的jar。这样做是为了满足不同客户需求。 尝试: java -Xbootclasspath/a:file:./libs

  • 在Android11中引入了范围存储。根据文档,保存非媒体文件(如PDF)应使用存储访问框架。因此,在使用存储访问框架时,用户需要通过系统文件选择器选择位置来保存非媒体文件(PDF)。但如果你在Android11上使用whatsapp应用程序,并尝试保存PDF文件,它不会要求用户选择位置。默认情况下会将pdf文件保存到外部文档目录。我想在我的应用程序中复制相同的行为。有人能带我到这里来吗。

  • 本文向大家介绍SpringBoot内部外部配置文件加载顺序解析,包括了SpringBoot内部外部配置文件加载顺序解析的使用技巧和注意事项,需要的朋友参考一下 内部配置加载顺序 SpringBoot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件 –file:./config/ –file:./ –cl