💜 想真正擅长编程? 从一门课程开始,100% 免费

2-3、本地配置文件修改

项目导入IDEA了,但直接点运行八成要报错。因为配置文件里的数据库地址、Redis地址、各种密码都是别人的或线上的,你得改成你自己本地的。


一、先搞清楚配置文件结构

SpringBoot项目的配置文件一般在src/main/resources/目录下。

常见文件

TEXT
src/main/resources/
  application.yml          (主配置)
  application-dev.yml      (开发环境配置)
  application-prod.yml     (生产环境配置)
  application-local.yml    (本地环境配置,可能需要你新建)
  bootstrap.yml            (Nacos等配置中心用的)
  logback-spring.xml       (日志配置)
  mapper/                  (MyBatis的XML文件)
  static/                  (静态资源)

配置文件格式

SpringBoot支持两种格式:

yml格式(推荐):

YAML
server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb

properties格式(老项目常见):

TEXT
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb

两种功能一样,yml层次更清晰,properties更简单。项目用哪个就改哪个。


二、环境配置(Profile)

SpringBoot多环境配置

一般项目都有多套环境:

TEXT
application.yml          (通用配置)
application-dev.yml      (开发环境)
application-test.yml     (测试环境)
application-prod.yml     (生产环境)

在application.yml里指定使用哪个环境:

YAML
spring:
  profiles:
    active: dev  # 使用dev环境的配置

切换到本地环境

方法1:改主配置文件

YAML
spring:
  profiles:
    active: local  # 改成你自己的本地环境

方法2:启动参数指定

在IDEA的Run/Debug Configuration里加:

TEXT
--spring.profiles.active=local

方法3:环境变量

IDEA运行配置 → Environment variables:

TEXT
SPRING_PROFILES_ACTIVE=local

如果没有local配置文件

自己复制一份dev的,改名:

TEXT
复制 application-dev.yml → 改名 application-local.yml

然后把里面的地址、密码都改成你本地的。


三、必须修改的配置项

1. 数据库配置

找到datasource相关配置:

YAML
spring:
  datasource:
    # 改成你本地的MySQL地址和端口
    url: jdbc:mysql://127.0.0.1:3306/你的数据库名?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf-8&allowPublicKeyRetrieval=true
    # 你的MySQL用户名
    username: root
    # 你的MySQL密码
    password: 你的MySQL密码
    driver-class-name: com.mysql.cj.jdbc.Driver

注意:

  • 数据库名改成项目要求的数据库名
  • 密码改成你自己的
  • MySQL 8.x加allowPublicKeyRetrieval=true避免认证报错
  • 时区加serverTimezone=Asia/Shanghai避免时间不对

2. Redis配置

YAML
spring:
  redis:
    # 你本地的Redis地址
    host: 127.0.0.1
    port: 6379
    # 你的Redis密码(没设密码就注释掉这行)
    password: 你的Redis密码
    # 使用的数据库编号(0-15)
    database: 0
    # 连接超时
    timeout: 3000ms
    lettuce:
      pool:
        max-active: 8
        max-idle: 8
        min-idle: 0
        max-wait: -1ms

3. 端口配置

YAML
server:
  port: 8080  # 改成没被占用的端口

如果8080被占用,改成8081、9090之类的。

4. 日志配置

YAML
logging:
  level:
    root: INFO
    com.yourcompany: DEBUG  # 你项目的包名,设为DEBUG方便调试
  file:
    name: logs/application.log  # 日志文件路径

开发时把项目包的日志级别设成DEBUG,能看到更详细的日志,方便排查问题。

5. 文件上传配置

YAML
spring:
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 100MB

如果项目有文件上传功能,确认大小限制够用。

6. MyBatis/MyBatis-Plus配置

YAML
mybatis:
  mapper-locations: classpath:mapper/**/*.xml
  configuration:
    map-underscore-to-camel-case: true  # 下划线转驼峰
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  # 打印SQL

mybatis-plus:
  mapper-locations: classpath:mapper/**/*.xml
  configuration:
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

开发时打印SQL很重要,能看到每条SQL语句和参数,方便调试。

7. 其他常见配置

Nacos配置中心:

YAML
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848  # Nacos地址
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml

如果你项目用了Nacos,本地也需要装一个Nacos。

RabbitMQ/Kafka等消息队列:

YAML
spring:
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest

用到什么中间件就配什么,配之前确认你本地装了对应的中间件。


四、敏感配置的处理

不要提交密码到Git

配置文件里的数据库密码、Redis密码、第三方API密钥等属于敏感信息,不要提交到Git。

方法1:用环境变量

YAML
spring:
  datasource:
    password: ${DB_PASSWORD:默认密码}

${DB_PASSWORD:默认密码}的意思是:读环境变量DB_PASSWORD,如果没有就用默认密码。

IDEA运行配置 → Environment variables:

TEXT
DB_PASSWORD=Root@123456

方法2:把含密码的配置文件加到.gitignore

TEXT
application-local.yml
application-prod.yml

提交一个模板文件application-local.yml.template,让别人知道格式:

YAML
# 复制此文件为 application-local.yml 并填写你的配置
spring:
  datasource:
    password: 你的MySQL密码

Jasypt加密(进阶)

如果必须把配置提交到Git,用Jasypt加密敏感信息:

XML
<!-- pom.xml -->
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.5</version>
</dependency>
YAML
# 加密后的密码
spring:
  datasource:
    password: ENC(加密后的字符串)
# Jasypt密钥
jasypt:
  encryptor:
    password: 你的密钥

新人一般用方法2就行,简单直接。


五、一个完整的本地配置文件示例

application-local.yml:

YAML
# ===== 服务器配置 =====
server:
  port: 8080
  servlet:
    context-path: /api  # 如果项目有context-path

# ===== Spring配置 =====
spring:
  # 数据源
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/my_project?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf-8&allowPublicKeyRetrieval=true
    username: root
    password: Root@123456
    driver-class-name: com.mysql.cj.jdbc.Driver
    hikari:
      maximum-pool-size: 10
      minimum-idle: 2
      connection-timeout: 30000

  # Redis
  redis:
    host: 127.0.0.1
    port: 6379
    password: Redis@123456
    database: 0
    timeout: 3000ms
    lettuce:
      pool:
        max-active: 8
        max-idle: 8
        min-idle: 0

  # 文件上传
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 100MB

  # Jackson
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: Asia/Shanghai

# ===== MyBatis配置 =====
mybatis-plus:
  mapper-locations: classpath:mapper/**/*.xml
  configuration:
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

# ===== 日志配置 =====
logging:
  level:
    root: INFO
    com.myproject: DEBUG
  file:
    name: logs/my-project.log

# ===== 项目自定义配置 =====
project:
  # JWT密钥
  jwt:
    secret: your-secret-key-at-least-32-characters-long!!
    expiration: 86400000  # 24小时(毫秒)
  # 文件存储路径
  file:
    upload-path: D:/uploads

六、IDEA里编辑yml的技巧

1. 自动提示

IDEA对yml有自动提示功能,输入时按Ctrl+Space会弹出可用的配置项。

如果没提示:

  • 确认装了Spring Boot插件(旗舰版自带)
  • 确认pom.xml里有spring-boot-configuration-processor依赖
XML
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

2. YAML格式检查

yml对缩进非常敏感,缩进不对就解析不了。

规则:

  • 用空格缩进,不能用Tab
  • 每级缩进2个空格
  • 冒号后面要有空格:key: value(不是key:value)

IDEA会标红格式错误的地方,注意看提示。

3. 在线YAML验证

如果yml报错但找不到问题,粘贴到在线工具检查:


七、常见问题

问题1:端口被占用

报错:Port 8080 was already in use

改server.port为其他端口,或者杀掉占用8080的进程。

问题2:数据库连接失败

报错:Communications link failure

检查:

  • MySQL服务是否启动
  • URL里的地址、端口是否正确
  • 数据库名是否正确
  • 用户名密码是否正确
  • MySQL 8.x是否加了allowPublicKeyRetrieval=true

问题3:Redis连接失败

报错:Unable to connect to Redis

检查:

  • Redis是否启动
  • 密码是否正确
  • 端口是否被占用

问题4:配置不生效

改了yml但项目没读到。

排查:

  1. 确认spring.profiles.active指向了正确的环境
  2. 确认改的文件就是项目加载的那个(不是改了模板文件)
  3. 重启项目

问题5:中文乱码

properties文件中文乱码。

解决:

  1. File → Settings → Editor → File Encodings → Default encoding for properties files → UTF-8
  2. 勾选Transparent native-to-ascii conversion
  3. 重新输入中文内容

小结

配置项 要改成什么
数据库地址 127.0.0.1:3306
数据库密码 你自己的
Redis地址 127.0.0.1:6379
Redis密码 你自己的
端口 没被占用的
Profile local
日志级别 DEBUG(方便调试)

配置改好了,下一步初始化数据库。