2、项目初始化与环境搭建:创建Spring Boot项目、配置数据库(MySQL + Redis)、引入依赖
好,咱们正式开始动手了。
这一章,说白了就是搭地基。地基稳不稳,直接决定你后面写代码的时候会不会想骂人。我见过太多项目,前期图省事,随便搞个脚手架就开始写业务,结果到了联调阶段,数据库连不上、缓存报错、依赖冲突……那叫一个酸爽。
所以,咱们花点时间,把这一步走扎实。
2.1 创建Spring Boot项目
我个人习惯用 Spring Initializr 来生成项目骨架。你可以去 start.spring.io 网页上点一点,也可以用 IDEA 自带的向导。我一般用后者,省事。
选什么版本?我建议用 2.7.x 或者 3.0.x。2.7.x 比较稳定,3.0.x 开始支持一些新特性。如果你是新项目,直接上 3.0 也没问题。但要注意,3.0 之后最低要求 JDK 17。
嗯,这里要提一句:JDK 版本别太老。我之前有个同事,项目都跑起来了才发现用的 JDK 8,结果 Spring Boot 3 根本不支持,又回头重搞,浪费时间。
选好版本后,勾上这几个依赖:
- Spring Web —— 做 REST API 必备
- Spring Data JPA —— 操作 MySQL 的利器
- Spring Data Redis —— 缓存和分布式锁的基础
- MySQL Driver —— 连数据库的驱动
- Lombok —— 少写点 getter/setter,代码清爽
生成之后,项目结构大概长这样:
marketing-campaign/
├── src/
│ ├── main/
│ │ ├── java/com/example/marketing/
│ │ │ ├── controller/
│ │ │ ├── service/
│ │ │ ├── repository/
│ │ │ ├── entity/
│ │ │ └── MarketingApplication.java
│ │ └── resources/
│ │ ├── application.yml
│ │ └── static/
│ └── test/
└── pom.xml
别急着写代码,先看看 pom.xml 里的依赖是不是都齐了。我遇到过几次,勾选的时候漏了,结果启动报错,还得手动加。
2.2 配置MySQL数据库
数据库是营销活动的“大本营”。所有活动规则、用户参与记录、奖品信息,都得存进去。
首先,在 application.yml 里配一下数据源:
spring:
datasource:
url: jdbc:mysql://localhost:3306/marketing_campaign?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL8Dialect
这里有几个点要注意:
- ddl-auto: update —— 开发阶段用这个,JPA 会自动帮你建表。但上了生产环境,一定要改成
validate或者none,不然手滑删表就完了。 - show-sql: true —— 开发时打开,方便调试。上线前记得关掉,不然日志里全是 SQL,影响性能。
- allowPublicKeyRetrieval=true —— 这个参数我踩过坑。MySQL 8.0 之后,如果连接时没配这个,可能会报“Public Key Retrieval is not allowed”的错误。
${DB_PASSWORD},这样就算代码泄露了,密码也不会暴露。
然后,在 MySQL 里创建对应的数据库:
CREATE DATABASE marketing_campaign DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
为什么用 utf8mb4?因为营销活动里经常有用户昵称、活动描述,可能包含 emoji 表情。如果用 utf8,存 emoji 会报错。我之前就因为这个被测试妹子追着骂了一下午……
2.3 配置Redis
Redis 在营销活动里太重要了。秒杀活动的库存扣减、用户参与频率限制、活动数据的缓存……都离不开它。
先加依赖。如果你用的是 Spring Boot 2.x,依赖是:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
如果是 3.x,名字一样,但底层默认用的是 Lettuce 而不是 Jedis。我个人更推荐 Lettuce,因为它支持异步和响应式,性能更好。
然后配置连接信息:
spring:
redis:
host: localhost
port: 6379
password: your_redis_password
timeout: 3000ms
lettuce:
pool:
max-active: 16
max-idle: 8
min-idle: 2
这里有个小细节:连接池一定要配。不配的话,默认是单连接,高并发下 Redis 会变成瓶颈。我曾经在生产环境遇到过,活动刚开始,Redis 连接就超时了,查了半天才发现是连接池没配。
2.4 引入其他依赖
除了核心的数据库和缓存,营销活动模块还需要一些辅助工具。我列一下常用的:
| 依赖 | 用途 | 备注 |
|---|---|---|
| spring-boot-starter-validation | 参数校验 | 比如活动时间不能为空、奖品数量必须大于0 |
| jackson-databind | JSON 序列化/反序列化 | Spring Boot 默认自带,但版本要注意 |
| commons-lang3 | 字符串、集合工具类 | 写业务逻辑时经常用到 |
| hutool-all | 全能工具包 | 我个人很喜欢,ID 生成、加密、日期处理都有 |
| spring-boot-starter-test | 单元测试 | 别偷懒,后面每章都要写测试 |
在 pom.xml 里加上这些:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.16</version>
</dependency>
📌 重点回顾:
- Spring Boot 版本选 2.7.x 或 3.0.x,JDK 至少 17
- MySQL 配置注意字符集用 utf8mb4,ddl-auto 开发用 update,生产用 validate
- Redis 一定要配连接池,生产环境要设密码
- 工具类依赖提前加好,后面写代码会省很多事
好了,环境搭完了。你可以试着启动一下项目,看看控制台有没有报错。如果一切正常,你会看到 Spring Boot 的启动日志,最后一行是 Started MarketingApplication in X seconds。
嗯,看到这个就说明地基打好了。下一章,咱们开始设计数据库表结构,把营销活动的“骨架”搭起来。