Spring Boot 基础入门与实战:从框架理解到项目搭建

发布于:2025-07-13 ⋅ 阅读:(14) ⋅ 点赞:(0)

一、Spring Boot 是什么?

Spring Boot 是 Spring 框架与 Spring MVC 的综合,它整合了两者的核心能力,解决了传统 Spring 生态中配置繁琐的问题。简单来说,它不是对 Spring 或 Spring MVC 的替代,而是在两者基础上的优化与封装,让开发者能更高效地进行企业级应用开发。

 

二、Spring Boot 核心特点:约定大于配置

传统的 Spring 和 Spring MVC 开发中,我们需要编写大量 XML 配置文件(如 spring.xmlspring-mvc.xmlweb.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.Driver
    url: jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8
    username: root
    password: 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

  • 定义实体类(如 PersonLoginUser),映射数据库表字段;
  • 创建 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 配置访问路径。

网站公告

今日签到

点亮在社区的每一天
去签到