Spring Boot 改端口不生效
介绍
在使用 Spring Boot 进行开发时,有时候需要更改应用的端口号。但是有些开发者在更改端口号后却发现改动不生效,仍然使用默认的端口号启动应用。本文将分步骤介绍如何正确地改变 Spring Boot 应用的端口号。
整体步骤
下面是整个过程的步骤概览:
步骤 | 描述 |
---|---|
1 | 在 application.properties 文件中添加配置 |
2 | 创建一个新的配置类 |
3 | 使用 @Value 注解注入配置值 |
4 | 关闭默认的端口号配置 |
接下来我们将详细介绍每个步骤应该做什么。
步骤 1:在 application.properties 文件中添加配置
首先,需要在 application.properties
文件中添加一个配置来指定要使用的端口号。打开 src/main/resources
目录下的 application.properties
文件(如果不存在则新建一个),并添加以下内容:
server.port=8081
这里的 server.port
属性设置为 8081
,你可以根据需要更改成其他端口号。
步骤 2:创建一个新的配置类
接下来,我们需要创建一个新的配置类,用于加载 application.properties
文件中的配置。在 src/main/java
目录下创建一个新的包(比如 com.example.config
),然后在该包中创建一个新的类(比如 ServerConfig
)。代码如下:
package com.example.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "server")
public class ServerConfig {
private int port;
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
}
步骤 3:使用 @Value 注解注入配置值
然后,在需要使用端口号的地方,使用 @Value
注解将配置值注入到相应的属性中。比如,假设有一个 HomeController
类,需要获取端口号并进行相关处理。代码如下:
package com.example.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HomeController {
@Value("${server.port}")
private int port;
@GetMapping("/")
@ResponseBody
public String home() {
return "当前端口号:" + port;
}
}
在以上示例中,使用 @Value("${server.port}")
注解将配置值注入到 port
属性中。
步骤 4:关闭默认的端口号配置
最后,我们需要关闭 Spring Boot 默认的端口号配置。在 ServerConfig
类中添加以下内容:
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ServerConfig {
// ...
@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> containerCustomizer() {
return (container -> container.setPort(0));
}
}
以上代码创建了一个 WebServerFactoryCustomizer
Bean,用于定制 Tomcat 容器的配置,将端口号设置为 0
,表示随机分配一个可用的端口号。
类图
下面是类图的表示:
classDiagram
class HomeController {
-int port
+home()
}
class ServerConfig {
-int port
+getPort(): int
+setPort(port: int): void
+containerCustomizer(): WebServerFactoryCustomizer<TomcatServletWebServerFactory>
}
HomeController -- ServerConfig
以上就是正确改变 Spring Boot 应用端口号的步骤和代码。通过按照以上步骤进行配置,你可以成功更改应用的端口号并使其生效。希望对你有所帮助!