我是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和文件放到其他位置时,我需要进行代码更改以反映新目录,这不能解决远离代码重新编译的问题。
我希望我明白我的问题,并立即回复你们:) 在此先感谢:)
答案 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应用程序配置为从中读取后,可以随时修改它们,而无需重新编译或重新启动。