项目导入IDEA了,但直接点运行八成要报错。因为配置文件里的数据库地址、Redis地址、各种密码都是别人的或线上的,你得改成你自己本地的。
一、先搞清楚配置文件结构
SpringBoot项目的配置文件一般在src/main/resources/目录下。
常见文件
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格式(推荐):
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
properties格式(老项目常见):
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
两种功能一样,yml层次更清晰,properties更简单。项目用哪个就改哪个。
二、环境配置(Profile)
SpringBoot多环境配置
一般项目都有多套环境:
application.yml (通用配置)
application-dev.yml (开发环境)
application-test.yml (测试环境)
application-prod.yml (生产环境)
在application.yml里指定使用哪个环境:
spring:
profiles:
active: dev # 使用dev环境的配置
切换到本地环境
方法1:改主配置文件
spring:
profiles:
active: local # 改成你自己的本地环境
方法2:启动参数指定
在IDEA的Run/Debug Configuration里加:
--spring.profiles.active=local
方法3:环境变量
IDEA运行配置 → Environment variables:
SPRING_PROFILES_ACTIVE=local
如果没有local配置文件
自己复制一份dev的,改名:
复制 application-dev.yml → 改名 application-local.yml
然后把里面的地址、密码都改成你本地的。
三、必须修改的配置项
1. 数据库配置
找到datasource相关配置:
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配置
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. 端口配置
server:
port: 8080 # 改成没被占用的端口
如果8080被占用,改成8081、9090之类的。
4. 日志配置
logging:
level:
root: INFO
com.yourcompany: DEBUG # 你项目的包名,设为DEBUG方便调试
file:
name: logs/application.log # 日志文件路径
开发时把项目包的日志级别设成DEBUG,能看到更详细的日志,方便排查问题。
5. 文件上传配置
spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 100MB
如果项目有文件上传功能,确认大小限制够用。
6. MyBatis/MyBatis-Plus配置
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配置中心:
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等消息队列:
spring:
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
用到什么中间件就配什么,配之前确认你本地装了对应的中间件。
四、敏感配置的处理
不要提交密码到Git
配置文件里的数据库密码、Redis密码、第三方API密钥等属于敏感信息,不要提交到Git。
方法1:用环境变量
spring:
datasource:
password: ${DB_PASSWORD:默认密码}
${DB_PASSWORD:默认密码}的意思是:读环境变量DB_PASSWORD,如果没有就用默认密码。
IDEA运行配置 → Environment variables:
DB_PASSWORD=Root@123456
方法2:把含密码的配置文件加到.gitignore
application-local.yml
application-prod.yml
提交一个模板文件application-local.yml.template,让别人知道格式:
# 复制此文件为 application-local.yml 并填写你的配置
spring:
datasource:
password: 你的MySQL密码
Jasypt加密(进阶)
如果必须把配置提交到Git,用Jasypt加密敏感信息:
<!-- pom.xml -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
# 加密后的密码
spring:
datasource:
password: ENC(加密后的字符串)
# Jasypt密钥
jasypt:
encryptor:
password: 你的密钥
新人一般用方法2就行,简单直接。
五、一个完整的本地配置文件示例
application-local.yml:
# ===== 服务器配置 =====
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依赖
<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但项目没读到。
排查:
- 确认
spring.profiles.active指向了正确的环境 - 确认改的文件就是项目加载的那个(不是改了模板文件)
- 重启项目
问题5:中文乱码
properties文件中文乱码。
解决:
- File → Settings → Editor → File Encodings → Default encoding for properties files → UTF-8
- 勾选Transparent native-to-ascii conversion
- 重新输入中文内容
小结
| 配置项 | 要改成什么 |
|---|---|
| 数据库地址 | 127.0.0.1:3306 |
| 数据库密码 | 你自己的 |
| Redis地址 | 127.0.0.1:6379 |
| Redis密码 | 你自己的 |
| 端口 | 没被占用的 |
| Profile | local |
| 日志级别 | DEBUG(方便调试) |
配置改好了,下一步初始化数据库。