从命令行设置spring属性文件位置

问题描述 投票:0回答:1

我有一个简单的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
  • 一直使用classpath上文件的值。
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,我只是想设置属性文件的位置。有什么办法吗?这可能吗?

java spring command-line properties startup
1个回答
0
投票

在你的属性类上做类似这样的事情。

 @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
© www.soinside.com 2019 - 2024. All rights reserved.