我有一个简单的Spring应用,从属性文件中读取配置值。该文件默认被配置在classpath上(@PropertySource("classpath:thefile.properties")
注解)。) 我希望能够在配置类上使用 可选 使用一些其他的属性文件,我可以(但不必)在程序启动时在命令行中指定。即,我最终想运行这样的东西。
java -jar application.jar --path "some/location/thefile.properties"
现在应该使用指定文件中的值。
我已经尝试过使用SpringBoot和SpringBoot中的 spring.config.location
选项。
java -jar "-Dspring.config.location=file:some/location/thefile.properties" application.jar
java -jar application.jar "--spring.config.location=file:some/location/thefile.properties"
我的主类看起来是这样的,我不需要使用SpringBoot,我只是想以某种方式设置属性文件的位置。
@SpringBootApplication
public class MainClass {
public static void main(String[] args) {
SpringApplication.run(MainClass.class, args);
// Application code triggered here...
}
}
我不需要使用SpringBoot,我只是想设置属性文件的位置。有什么办法吗?这可能吗?
在你的属性类上做类似这样的事情。
@Configuration
@PropertySource(value = "file:${myapp.external.config}")
**Command** java -jar -Dmyapp.external.config="C:\yourPath\abc.properties" xyz.jar
如果你有多个外部属性文件,例子如下
@Configuration
@PropertySource(value = {"file:${app1.config}", "file:${app2.config}"})
**Command** java -jar -Dapp1.config="C:\yourPath\abc1.properties"
-Dapp2.config="C:\yourPath\abc2.properties" xyz.jar