如何在JAR文件外部访问Spring配置

时间:2017-01-22 08:26:18

标签: spring spring-boot

我是Spring Boot Development的新手,目前无法解决如何在jar文件外加载spring应用程序配置的问题。

我现有的代码如下所示

private ApplicationContext context;

public static void main(String[] args){
    SpringApplication.run(SMPPEngine.c1ass);
    new SMPPEngine();
}

public SMPPEngine(){
    loadConfiguration();
    process();
}

private void loadConfiguration(){
    context = new ClassPatthlApplicationContext(”application-context.xm1”);
}

我想要实现的是将application-context.xml旁边的jar文件放在一个目录中,这样当配置发生变化时,我不需要重新编译我的代码只是为了反映应用程序的变化-context.xml。

根据我在互联网上阅读的内容,可以使用' file://directory/application.xml'而不是classpath。但是我使用后者的问题是,当你将jar和文件放到其他位置时,我需要进行代码更改以反映新目录,这不能解决远离代码重新编译的问题。

我希望我明白我的问题,并立即回复你们:) 在此先感谢:)

2 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点,标准的,您可以使用spring file:前缀来访问文件系统路径。

但是使用春季启动,您可以在application.properties中使用

指定它

spring.config.location属性,或者你可以在运行spring boot jar文件时在命令行中添加它 java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

但是对于你的代码,实际上你需要从配置文件重新创建spring上下文,但你想要获取上下文实例,你只需要注入它

@Autowired
private ApplicationContext context;

答案 1 :(得分:0)

另一种方法,如果你有基础设施。将使用Spring Cloud Config。将Boot应用程序配置为从中读取后,可以随时修改它们,而无需重新编译或重新启动。