当前位置: 首页 > news >正文

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

一、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.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

  • 定义实体类(如 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 配置访问路径。
http://www.dtcms.com/a/276212.html

相关文章:

  • 如何检测自动化设备中的直线导轨品质是否优良?
  • Oracle 数据库实战项目
  • SAC : 具有随机Actor的离策略最大熵深度强化学习
  • Android开发中RxJava的使用与原理
  • 杨娇兽の阴谋
  • 基于springboot+Vue的二手物品交易的设计与实现
  • 休闲项目策划与设计实训室:赋能实践育人的重要平台
  • 【学习笔记】Nginx常用安全配置
  • arcgis投影后数据显示问题记录
  • 以电商平台性能测试为例,详细描述Jmeter性能测试步骤,及如何确定用户并发数、用户启动时间、循环次数的设置
  • 算法练习6-大数乘法(高精度乘法)
  • jenkins部署vue前端项目
  • 【TA/Unity】Shader基础结构
  • TCP套接字
  • 网络配置综合实验全攻略(对之前学习的总结)
  • 医学AI前沿论坛第6期|目前主流的医学AI基础模型有哪些?我们应该如何在有限的数据下构建高性能的基础模型?
  • 某某航空 (新版)同盾 blackbox 补环境
  • 迷宫可达性统计问题详解
  • 缓存三剑客解决方案
  • 基于YOLO11的垃圾分类AI模型训练实战
  • 计算机毕业设计ssm医院耗材管理系统 基于SSM框架的医疗物资供应链管理平台 医院低值易耗品信息化监管系统
  • 解决MySql8报错:Public Key Retrieval is not allowed
  • 六年级数学知识边界总结思考-上册
  • 苍穹外卖项目日记(day05)
  • JavaScript加强篇——第六章 定时器(延时函数)与JS执行机制
  • matplotlib:散点图
  • CCF CSP第一轮认证一本通
  • 【Fargo】发送一个rtp包的过程3:为什么媒体包发送端检测到扩展,接收端检测不到
  • Rail开发日志_7
  • 9.3 快速调用与标准调用