Spring Boot 基础入门与实战:从框架理解到项目搭建
一、Spring Boot 是什么?
Spring Boot 是 Spring 框架与 Spring MVC 的综合,它整合了两者的核心能力,解决了传统 Spring 生态中配置繁琐的问题。简单来说,它不是对 Spring 或 Spring MVC 的替代,而是在两者基础上的优化与封装,让开发者能更高效地进行企业级应用开发。
二、Spring Boot 核心特点:约定大于配置
传统的 Spring 和 Spring MVC 开发中,我们需要编写大量 XML 配置文件(如 spring.xml
、spring-mvc.xml
、web.xml
等),配置过程繁琐且重复。而 Spring Boot 提出了 “约定大于配置” 的理念,其核心是:通过预先定义好的约定(如目录结构、命名规则等)替代手动配置,从而减少配置文件的编写。
例如:
- 固定目录结构:Controller 层放在
controller
包下,Service 层放在service
包下,无需额外配置扫描路径; - 默认配置:内置 Tomcat 服务器,无需手动部署到外部容器;
- 配置文件简化:通过
application.properties
或application.yml
集中配置,替代多份 XML 配置。
三、Spring Boot 项目搭建步骤
1. 项目创建
- 选择 Spring Boot 项目类型,命名项目(如
02spring-boot
),设置组名(如QCBY
); - 选择 Java 版本(示例中暂选 11,后续可修改),打包方式为 JAR;
- 选择基础依赖(后续可通过配置文件补充)。
2. 核心依赖配置
项目的依赖通过 pom.xml
管理,核心依赖包括:
- Spring Boot 核心启动器:
spring-boot-starter
(框架基础); - Web 支持:
spring-boot-starter-web
(整合 Spring MVC,内置 Tomcat,支持 Web 开发); - 测试依赖:
spring-boot-starter-test
(单元测试支持); - 数据库相关:
mysql-connector-java
(MySQL 驱动)、MyBatis 依赖(数据持久化)。
示例依赖配置(简化版):
<dependencies><!-- Spring Boot 核心启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- Web 支持 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- MySQL 驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- MyBatis 整合 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency>
</dependencies>
3. 配置文件使用
Spring Boot 支持两种配置文件格式:application.properties
和 application.yml
(推荐,结构更清晰)。
(1)数据库配置(YAML 示例)
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8username: rootpassword: 2020# MyBatis 配置
mybatis:mapper-locations: classpath:mapper/*.xml # Mapper 映射文件路径type-aliases-package: com.qcby.springbootdemo.entity # 实体类包路径
(2)Web 与静态资源配置
spring:mvc:static-path-pattern: /static/** # 静态资源(CSS、JS、图片等)路径thymeleaf:prefix: classpath:/templates/ # 页面模板前缀suffix: .html # 页面模板后缀cache: false # 关闭页面缓存(开发环境)
4. 项目结构与分层
Spring Boot 遵循传统分层架构,与 Spring MVC 类似:
- Controller 层:处理请求,返回数据或页面(使用
@Controller
注解); - Service 层:封装业务逻辑(使用
@Service
注解); - DAO 层(Mapper):数据访问,与数据库交互(使用 MyBatis 接口,配合
@Mapper
注解); - Entity 层:实体类,映射数据库表结构。
四、数据库操作与增删改查实战
1. 整合 MyBatis
- 定义实体类(如
Person
、LoginUser
),映射数据库表字段; - 创建 Mapper 接口(如
PersonDao
),定义数据库操作方法(查询、新增、删除等); - 编写 Mapper XML 文件,实现 SQL 逻辑;
- 在 Service 层调用 Mapper 接口,封装业务逻辑;
- 在 Controller 层调用 Service,处理前端请求。
2. 增删改查示例
(1)查询所有数据
// Controller 层
@GetMapping("/person/list")
public List<Person> getAllPersons() {return personService.findAll();
}// Service 层
public List<Person> findAll() {return personDao.findAll();
}// Mapper 接口
List<Person> findAll();// Mapper XML
<select id="findAll" resultType="com.qcby.springbootdemo.entity.Person">select * from person
</select>
(2)新增数据
// Controller 层
@GetMapping("/person/add")
public String addPerson(Person person) {int result = personService.add(person);return result > 0 ? "新增成功" : "新增失败";
}// Mapper XML
<insert id="add" parameterType="com.qcby.springbootdemo.entity.Person">insert into person(name, age) values(#{name}, #{age})
</insert>
(3)删除数据
// Controller 层
@GetMapping("/person/delete")
public String deletePerson(Integer id) {int result = personService.delete(id);return result > 0 ? "删除成功" : "删除失败";
}// Mapper XML
<delete id="delete" parameterType="java.lang.Integer">delete from person where id = #{id}
</delete>
五、前端页面与静态资源
- 页面模板:使用 Thymeleaf 模板引擎,页面放在
templates
目录下,通过配置文件指定前缀(classpath:/templates/
)和后缀(.html
); - 静态资源:CSS、JS、图片等放在
static
目录下,通过spring.mvc.static-path-pattern
配置访问路径。