作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我们的环境中,服务器监听的端口总是由命令行参数指定:
java -jar myweb.jar --server.port=1024
。
我们怎样才能得到这个值呢?在我的 AppSiteController.java
中,我尝试使用:
@Value("${server.port}")
private static String serverPort;
public static void main(String[] args) {
System.out.println(serverPort);
SpringApplication.run(AppSiteController.class, args);
}
当在命令行上正确指定值时返回 null。
谢谢。
最佳答案
对于 Spring Boot 2.x,您可以覆盖系统属性,如下所示:
mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8085
默认情况下,Spring Boot 将命令行参数转换为属性并将它们添加为环境变量。
您可以从应用程序的主要方法访问命令行参数:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
for(String arg:args) {
System.out.println(arg);
}
SpringApplication.run(Application.class, args);
}
}
这将打印我们从命令行传递给应用程序的参数。
关于spring - 如何在 Spring Boot 中访问命令行传递的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51079036/
我是一名优秀的程序员,十分优秀!