最近在发布测试环境时,application配置文件中并没有设置server.port配置,发现启动的springboot命令设置了--server.port=8089时不生效,还是8080端口。
找了很久没找到,临时解决办法,通过java -jar -Dserver.port=8089可以设置启动端口。分析了很多原因,包括springboot的server.port参数的覆盖方式等。在代码中打印入参是否有--server.port参数等,都没发现问题。
public class Application {
public static void main(String[] args) {
for (String arg : args) {
System.out.println("arg===="+args);
}
SpringApplication.run(Application .class);
}
}
控制台打印了--server.port参数。
最后才发现,java启动命令的main函数参数args,并没有传入到SpringApplication.run中,所以默认端口时8080,通过main方法传递进来的--server.port参数根本不会生效。
修改为,SpringApplication.run添加args参数后正常
public class Application {
public static void main(String[] args) {
for (String arg : args) {
System.out.println("arg===="+args);
}
SpringApplication.run(Application .class, args);
}
}