理解 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 是最常用的关系型数据库之一。配置时需注意时区设置(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.DriverPostgreSQL 的配置相对简洁,通常不需要额外的 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对于 NoSQL 数据库 MongoDB,Spring Boot 使用 spring.data.mongodb.uri 进行配置,格式与 JDBC 略有不同。
# MongoDB 连接配置
spring.data.mongodb.uri=mongodb://localhost:27017/user_db注意:上述示例中的密码
your_secure_password仅为占位符。在实际项目中,请务必替换为真实的强密码,并考虑使用环境变量或配置中心来管理敏感信息。
当使用 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=trueddl-auto 属性说明:
none:禁用 DDL 处理。
validate:验证数据库表结构是否与实体类匹配,不匹配则报错。
update:自动更新表结构以匹配实体类(开发环境常用)。
create:每次启动时删除旧表并重新创建(数据会丢失,仅用于测试)。
create-drop:会话结束时删除表。