第3章:后端项目初始化——用Spring Initializr创建SpringBoot项目
好,咱们正式开始动手了。这一章我会带你走一遍后端项目的初始化流程。说白了,就是怎么用Spring Initializr这个工具,把SpringBoot项目的骨架搭起来。
我个人习惯,每次新项目都从Spring Initializr开始。为什么?因为它省事。你想想看,手动去配pom.xml、建目录结构,那得花多少时间?而且容易漏东西。我刚开始用SpringBoot那会儿,就吃过这个亏——少配了一个starter,结果项目启动报错,排查了半天。
3.1 使用Spring Initializr创建项目
Spring Initializr有两种用法:一种是网页版,一种是IDE内置的。我建议你两种都试试,但咱们先从网页版讲起。
打开浏览器,访问 https://start.spring.io。你会看到一个表单,需要填几个关键信息:
| 配置项 | 我的推荐值 | 说明 |
|---|---|---|
| Project | Maven | 咱们用Maven管理依赖,Gradle也行,但Maven更主流 |
| Language | Java | Kotlin、Groovy也可以,但Java最稳 |
| Spring Boot | 2.7.x 或 3.x | 建议选最新的稳定版,别追太新 |
| Group | com.example | 一般用公司域名倒写 |
| Artifact | demo | 项目名,后面可以改 |
| Package name | 自动生成 | 保持默认就行 |
| Packaging | Jar | 前后端分离项目,用Jar包部署最方便 |
| Java | 11 或 17 | 别用8了,太老了 |
填完之后,点击「ADD DEPENDENCIES」按钮,选择咱们需要的starter。对于这个课程,我建议先加这几个:
- Spring Web —— 提供REST API支持
- Spring Data JPA —— 数据库操作
- MySQL Driver —— 连接MySQL
- Lombok —— 减少样板代码
小技巧: 我一般会先加最核心的依赖,其他的后面再补。比如Spring Security、Validation这些,等用到的时候再加也不迟。一次性加太多,反而容易搞混。
点击「GENERATE」按钮,浏览器会下载一个zip包。解压之后,用IDEA或Eclipse打开,项目就创建好了。
3.2 项目目录结构解析
解压后的项目长这样。嗯,咱们来看看每个文件夹是干嘛的:
demo/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/example/demo/
│ │ │ └── DemoApplication.java
│ │ └── resources/
│ │ ├── application.properties
│ │ ├── static/
│ │ └── templates/
│ └── test/
│ └── java/
│ └── com/example/demo/
│ └── DemoApplicationTests.java
├── pom.xml
└── HELP.md
我一个个说:
- src/main/java —— 放Java源代码的地方。所有业务逻辑、控制器、服务层都写在这里。
- src/main/resources —— 放配置文件、静态资源、模板文件。application.properties就在这里。
- src/test/java —— 单元测试代码。我建议你养成写测试的习惯,别偷懒。
- pom.xml —— Maven的配置文件。所有依赖、插件都在这里声明。
- HELP.md —— 帮助文档,可以删掉。
重点: DemoApplication.java 是项目的入口类。它上面有个 @SpringBootApplication 注解,这个注解包含了三个功能:@Configuration、@EnableAutoConfiguration、@ComponentScan。说白了,它就是SpringBoot的启动开关。
我记得第一次看到这个目录结构时,觉得挺简单的。但实际开发中,你会发现需要自己建很多子包。比如:
controller—— 放REST接口service—— 业务逻辑repository—— 数据库操作entity—— 实体类dto—— 数据传输对象
这些不是SpringBoot强制要求的,但这是行业最佳实践。你想想看,如果所有类都堆在一个包下,那项目大了之后,找文件得翻半天。
3.3 配置Maven依赖
打开 pom.xml,你会看到类似这样的内容:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
这里有几个点需要注意:
- parent —— 继承了spring-boot-starter-parent,这样就不用自己管理版本号了。SpringBoot会帮你搞定。
- dependencies —— 所有依赖都写在这里。注意,有些依赖加了
<scope>runtime</scope>,意思是只在运行时需要,编译时不需要。 - build —— 配置了spring-boot-maven-plugin,这个插件负责打包成可执行的Jar。
避坑指南: 我曾经遇到过一个问题——Lombok的注解不生效。排查了半天,发现是IDEA没安装Lombok插件。所以,如果你用了Lombok,记得在IDE里也装上对应的插件。另外,mysql-connector-j 这个依赖,SpringBoot 2.7.x 用的是新名字,旧版本叫 mysql-connector-java,别搞混了。
配置好pom.xml之后,记得让Maven重新加载一下。在IDEA里,点一下右上角的「刷新」按钮,或者右键pom.xml -> Maven -> Reload project。这样依赖才会下载到本地。
嗯,到这里,后端项目的基础就搭好了。下一章咱们会写第一个REST接口,让项目真正跑起来。