我的项目需要从外部目录加载应用程序上下文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/