java - Spring Boot - 从外部目录加载 applicationContext.xml

标签 java spring spring-boot

我的项目需要从外部目录加载应用程序上下文bean(它应该通过Java程序参数或“类路径”参数等进行管理)。这个想法是,使用 gradle 创建的 JAR 不包含 applicationContext.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

最佳答案

首先检查您的类路径实际上是什么样子。 您可以通过以下方式做到这一点:

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

并检查目录的完整路径(或从启动 java 命令的位置的相对路径)是否存在。

如果没问题的话

在主类中而不是

SpringApplication.run(SampleApplication.class, args);

尝试

new SampleApplication().configure(new SpringApplicationBuilder(SampleApplication.class)).run(args);

关于java - Spring Boot - 从外部目录加载 applicationContext.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49762926/

相关文章:

java - Spring Boot 应用程序可以在调试器中运行,但不能作为 jar 运行

java - Java 中使用零填充的三重 DES 加密/解密

java - 默认 log4j MDC 值

android - Android 的 Spring : add get parameter to every request

java - 我想在 Spring 项目中使用 JSP 文件的开发版本。是否可以?

spring - jpa :repositories tag?的Java配置版本是多少

java - 需要一种更好的方法来查找字符串中的重复单词

java - 连接后在 SQL 中打印新行

java - 如何设置 GitHub Docker CI 为所有子模块运行

spring-boot - 使用 Spring Data Rest 时如何从组件扫描中排除 @Repository