![](/img/trans.png)
[英]Override yml configuration in spring-boot with command line arguments
[英]Override yml configuration in spring-boot with command line arguments not work
我有一個spring-boot應用程序。 我想在執行jar時覆蓋application.yml中配置的一些屬性。
我的代碼是這樣的:
@Service
public class CommandService {
@Value("${name:defaultName}")
private String name;
public void print() {
System.out.println(name);
}
}
而Application.java是
@SpringBootApplication
public class Application implements CommandLineRunner {
@Autowired
private CommandService commandService;
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
@Override
public void run(String... args) throws Exception {
commandService.print();
}
}
application.yml
name:nameInApplication
當我執行這樣的命令時:
java -jar app.jar --name = nameInCommand
這不行
第二個命令也不起作用:
java -Dname = nameInCommand2 -jar app.jar
但是如果application.yml沒有配置名稱,第二個命令將運行良好,第一個命令也無法正常工作。
這已經有幾個月了,但是我要回答它,因為我剛遇到這個問題並通過谷歌和Ivan的評論發現了你的問題。 由於他沒有詳細說明,我不確定你是否解決了你的問題(你現在可能已經解決了),你將要改變:
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
至
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
那么簡單。 傳遞之前的參數永遠不會去任何地方,因此不會覆蓋你的application.yml屬性。 所以,如果你沒有弄清楚,或者有人像我一樣偶然發現了這個問題,那就是伊萬的意思
在啟動
SpringApplication.run(...)
時是否傳遞命令行參數?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.