• Ukieweb

    佳的博客

    曾梦想仗剑天涯,后来工作忙没去。

如何更改 Spring Boot 的默认端口

更过参看: https://www.baeldung.com/spring-boot-change-port

1. 使用属性文件

定制 Spring Boot 的最快,最简单的方法是覆盖默认属性的值。对于服务器端口,我们要更改的属性是 server.port

默认情况下,嵌入式服务器从端口8080开始。让我们看看如何在 application.properties 文件中提供不同的值:

server.port=8081

现在服务器将在端口8081上启动。

同样,如果我们使用 application.yml 文件,则可以执行以下操作:

server:
  port : 8081

如果将这两个文件放在 Maven 应用程序的 src / main / resources目录中,则它们会由 Spring Boot 自动加载。

特定于环境的端口

如果我们有一个部署在不同环境中的应用程序,我们可能希望它在每个系统的不同端口上运行。

通过将属性文件方法与 Spring 概要文件结合起来,我们可以轻松实现这一目标。具体来说,我们可以为每个环境创建一个属性文件。

例如,我们将有一个 application-dev.properties 文件,其内容为:

server.port=8081

然后,我们将添加另一个具有不同端口的 application-qa.properties 文件:

server.port=8082

在大多数情况下,属性文件配置应足够。

2. 程序配置

我们可以通过启动应用程序时设置特定属性自定义嵌入式服务器配置来以编程方式配置端口。

首先,让我们看看如何在主 @SpringBootApplication 类中设置属性:

@SpringBootApplication
public class CustomApplication {
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(CustomApplication.class);
        app.setDefaultProperties(Collections
          .singletonMap("server.port", "8083"));
        app.run(args);
    }
}

接下来,要自定义服务器配置,我们必须实现 WebServerFactoryCustomizer 接口:

@Component
public class ServerPortCustomizer 
  implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {
  
    @Override
    public void customize(ConfigurableWebServerFactory factory) {
        factory.setPort(8086);
    }
}

请注意,这适用于Spring Boot 2.x版本。

对于Spring Boot 1.x,我们可以类似地实现EmbeddedServletContainerCustomizer接口。

3. 使用命令行参数

将应用程序打包为 jar 并运行时,可以使用 java 命令设置 server.port 参数:

java -jar spring-5.jar --server.port=8083

或使用等效语法:

java -jar -Dserver.port=8083 spring-5.jar

4.评估顺序

最后,让我们来看一下Spring Boot对这些方法进行评估的顺序。

基本上,配置优先级是:

  • 嵌入式服务器配置

  • 命令行参数

  • 属性文件

  • @SpringBootApplication主要配置





0
0
下一篇:Linux 使用 ip netns命令操作 network namespace

0 条评论

老佳啊

85后,大专学历,中原人士,家里没矿。

由于年轻时长的比较帅气,导致在别人眼里,我一直不谈恋爱的原因是清高,实则是自己的小自卑。最大的人生目标就是找一个相知相爱相容的人,共度余生。

和人相处时如果能感受到真诚,会非常注重彼此的关系,对别人没有什么心机,即使有利益冲突,一般也会以和为贵,因为在这个世界上,物质的东西,从来不会吸引到我。

特别迷恋那些大山大水,如果现在还能隐居,可能早就去了。对那些宏伟的有底蕴的人文景观比较不感冒。

从事于IT行业,却一直对厨房念念不忘,由于身材魁梧,总觉得自己上辈子是个将军,可惜这辈子没当兵,也不会打架。