网站首页 > 博客文章 正文
1. 概述
Spring Boot为许多配置属性提供了合理的默认值。但我们有时需要使用特定于案例的值自定义这些值。一个常见的用例是更改嵌入式服务器的默认端口。在本文中,我们将介绍实现此目的的几种方法。
2. 使用属性文件
自定义 Spring 引导的最快和最简单的方法是覆盖默认属性的值。对于服务器端口,我们要更改的属性是 server.port。
默认情况下,嵌入式服务器在端口 8080 上启动。那么,让我们看看如何在 application.properties 文件中提供不同的值:
server.port=8081
现在,服务器将在端口 8081 上启动。
如果我们使用 application.yml 文件,我们可以做同样的事情:
server:
port : 8081
如果将这两个文件放在 Maven 应用程序的 src/main/resources 目录中,则 Spring Boot 会自动加载这两个文件。
2.1. 特定于环境的端口
如果我们在不同的环境中部署了一个应用程序,我们可能希望它在每个系统上的不同端口上运行。
我们可以通过将属性文件方法与 Spring 配置文件相结合来轻松实现这一点。具体来说,我们可以为每个环境创建一个属性文件。
例如,我们将有一个包含以下内容的application-dev.properties文件:
server.port=8081
然后,我们将添加另一个具有不同端口的 application-stg.properties 文件:
server.port=8082
现在,属性文件配置应该足以满足大多数情况。但是,此目标还有其他选择,因此让我们也探索它们。
3. 程序化配置
我们可以通过在启动应用程序时设置特定属性或自定义嵌入式服务器配置来以编程方式配置端口。
首先,让我们看看如何在启动类@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 接口。
4. 使用命令行参数
当将我们的应用程序打包并作为 jar 运行时,我们可以使用 java 命令设置 server.port 参数:
java -jar spring-5.jar --server.port=8083
或使用等效语法:
java -jar -Dserver.port=8083 spring-5.jar
5. 评估顺序
最后,让我们看一下 Spring Boot 评估这些方法的顺序。
基本上,配置优先级为:
- 嵌入式服务器配置
- 命令行参数
- 属性文件
- 启动类@SpringBootApplication配置
猜你喜欢
- 2024-09-15 python轻松抓取app接口(python抓app数据)
- 2024-09-15 spring boot 中设置 端口的 两种方式
- 2024-09-15 教你用 Python 操控你的上网请求(如何用python语言进行网络爬虫的开发)
- 2024-09-15 Node.js-第一个应用程序(nodejs应用开发)
- 2024-09-15 Linux(CentOS 7)下安装配置nginx代理多个tomcat实例和应用
- 2024-09-15 Iptables 最佳实践(iptables-j)
- 2024-09-15 nginx应用 | 反向代理,统一鉴权,目录重定向
- 2024-09-15 Docker-08-企业级私有仓库(k8s docker私有仓库搭建)
- 2024-09-15 Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理
- 2024-09-15 RocketMQ 源码探究 —— 长连接与长轮询实现
你 发表评论:
欢迎- 最近发表
-
- 谷歌云推出印度尼西亚“BerdAIa for Security”网络安全计划
- 谷歌:已解决全球服务中断问题,受影响平台涉及Spotify、Discord等
- 不再单一依赖英伟达,OpenAI被曝开始租用谷歌AI芯片训练ChatGPT
- 谷歌云代理商:怎样通过谷歌云服务器搭建社交平台?
- 谷歌云服务遭遇全球性宕机,影响多家互联网巨头
- OpenAI正式将谷歌云纳入供应商名单
- 谷歌给Agent造了个“微信”,和MCP功能互补,多智能体协作更顺畅了
- OpenAI“去微软化”加速:最新引入谷歌(GOOGL.US)构建混合云生态
- 谷歌给Agent造了个“微信”,和MCP功能互补,多智能体协作更顺畅
- 谷歌与OpenAI携手:云合作背后的机遇与隐忧
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- flutterrun (59)
- 系统设计图 (58)
- powershellfor (73)
- messagesource (71)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- qcombobox样式表 (68)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)