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

时间:2018-04-10 21:12:40

标签: java spring spring-boot

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

@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 个答案:

答案 0 :(得分:0)

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

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

并且检查已满(或从您启动java命令的相对路径)到目录的路径就在那里。

如果没问题

在主类而不是

SpringApplication.run(SampleApplication.class, args);

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

答案 1 :(得分:0)

使用

从外部目录加载applicationContext
@SpringBootApplication
@ImportResource({"file:/yourfullpath/applicationContext.xml"})
public class SampleApplication {

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