源本科技 | 码上会

Spring Boot 配置 properties

2026/03/25
17
0

学习目标

  • 理解 application.properties 在 Spring Boot 外部化配置中的核心作用。

  • 掌握服务器端口、应用名称及数据库连接等关键属性的配置方法。

  • 学会针对不同数据库(MySQL, PostgreSQL, MongoDB)编写正确的连接参数。

  • 了解 JPA/Hibernate 相关配置及其对数据库行为的影响。


引言

在 Spring Boot 应用中,配置文件是定制应用行为而不修改源代码的关键。通过 application.properties 文件,开发者可以集中管理所有设置,从服务器端口到数据库凭证,再到日志级别。

使用 application.properties 的主要优势:

  • 集中化管理:所有配置项集中在一个文件中,便于维护和审计。

  • 灵活覆盖:轻松覆盖 Spring Boot 的默认设置(例如修改默认端口)。

  • 环境适配:为开发、测试和生产环境提供不同的配置方案,无需重新编译代码。

  • 消除硬编码:将敏感信息(如密码)和可变参数从 Java 代码中剥离,提升安全性。


常用配置项

服务器配置

Spring Boot 内置了嵌入式服务器(默认为 Tomcat),启动时默认监听 8080 端口。若该端口被占用或需遵循特定规范,可通过 server.port 属性进行修改。

# 将应用启动端口修改为 8989
server.port=8989

此外,还可以配置上下文路径(Context Path),使所有请求都带上统一的前缀:

# 设置应用访问路径前缀,例如 http://localhost:8080/myapp/hello
server.servlet.context-path=/myapp

定义应用名称

使用 spring.application.name 属性可以为当前应用指定一个逻辑名称。虽然在单体应用中它主要影响日志输出,但在微服务架构中,它是服务注册与发现(如后续可能用到的 Nacos 或 Eureka)的关键标识。

# 设置应用名称
spring.application.name=user-service

数据库配置案例

连接数据库是后端开发的核心需求。Spring Boot 通过 spring.datasource 前缀的属性来配置数据源。根据所使用的数据库类型不同,具体的 JDBC URL 格式和驱动类名也有所区别。

MySQL

MySQL 是最常用的关系型数据库之一。配置时需注意时区设置(serverTimezone)和字符集编码。

# MySQL 连接配置
spring.datasource.url=jdbc:mysql://localhost:3306/user_db?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=your_secure_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

PostgreSQL

PostgreSQL 的配置相对简洁,通常不需要额外的 URL 参数即可正常工作。

# PostgreSQL 连接配置
spring.datasource.url=jdbc:postgresql://localhost:5432/user_db
spring.datasource.username=postgres
spring.datasource.password=your_secure_password
spring.datasource.driver-class-name=org.postgresql.Driver

MongoDB

对于 NoSQL 数据库 MongoDB,Spring Boot 使用 spring.data.mongodb.uri 进行配置,格式与 JDBC 略有不同。

# MongoDB 连接配置
spring.data.mongodb.uri=mongodb://localhost:27017/user_db

注意:上述示例中的密码 your_secure_password 仅为占位符。在实际项目中,请务必替换为真实的强密码,并考虑使用环境变量或配置中心来管理敏感信息。

Hibernate (JPA)

当使用 Spring Data JPA 进行持久层开发时,通常需要配置 Hibernate 的行为。这些设置决定了 ORM 框架如何与数据库交互。

# 自动处理实体类与数据库表的映射关系
# 可选值:none, validate, update, create, create-drop
spring.jpa.hibernate.ddl-auto=update

# 是否在控制台打印执行的 SQL 语句(开发环境建议开启)
spring.jpa.show-sql=true

# 指定数据库方言,确保生成的 SQL 符合特定数据库语法
# Spring Boot 通常能自动检测,但显式指定更稳妥
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

# 格式化输出的 SQL 语句,使其更易读
spring.jpa.properties.hibernate.format_sql=true

ddl-auto 属性说明:

  • none:禁用 DDL 处理。

  • validate:验证数据库表结构是否与实体类匹配,不匹配则报错。

  • update:自动更新表结构以匹配实体类(开发环境常用)。

  • create:每次启动时删除旧表并重新创建(数据会丢失,仅用于测试)。

  • create-drop:会话结束时删除表。