Spring Boot

一个简化spring开发的框架,

特点:

微服务

自动配置

起步依赖

命令行界面

Actuator2

2. 构建SpringBoot项目需要什么

需要依赖parent

29e52e488f01acbdbb62223366544ab7.png

配置启动器

03e63928ef99c0a7d1e84d2975d24fb1.png

编写Spring Boot启动类

2f147e7e310997215388ffe9c01edcaf.png

SpringBoot整合 Servlet

方式一:通过注解方式整合servlet

/**

*SpringBoot 整合 Servlet 方式一

*

*<servlet>

* <servlet-name>FirstServlet</servlet-name>

* <servlet-class>com.bjsxt.servlet.FirstServlet</servlet-class>

*</servlet>

*

*<servlet-mapping>

* <servlet-name>FirstServlet</servlet-name>

* <url-pattern>/first</url-pattern>

*</servlet-mapping>

*

*/

d6791de86bbee7cf7938e5f6c1a7cba6.png

方式二: 通过方法整合servlet

1913f24c0a38632902769c8da064e848.png

注意:编写启动类

启动器存放的位置,启动器可以和controller位于同一个包下,或者位于controller的上一级包中,但是不能放到controller的平级以及子包下,这样才能对controller 进行管理 ,平级或子级都不能管理到

整合Filter 整合Listener 方式差不多

SpringBoot 访问静态资源

两种方式:一种在classpath目录下的static目录下

还有一种 src/main/webapp下(Context上下文)

当两个目录下的图片名字相同时 ,优先访问webapp下的资源

85c27ce095350439d87883c3176899df.png

a42a439d4476a8822b8fe98aa0ad13d0.png

SpringBoot 上传文件 会默认扫描classpath 目录下的application.properties文件

6b79bb6d95bac74f9e78108aabe815c4.png

Servlet类

74af75b6cd4aa25f778d04670bfd54bc.png

Spring Boot整合 Freemarker

1. 添加坐标

60e9d47fc77ad1eb686c330aaa67f862.png

e9e32102240d3dca6c140022370f5c6c.png

格式

fe97b26fdfc29fd37465cbe50a7c7a87.png

Spring Boor整合 Thymeleaf

1. 导入坐标依赖

<!--thymeleaf启动器的坐标 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-thymeleaf</artifactId>

</dependency>

2. 文件扩展名(模板文件夹还是 templates)

.html

3. 语法和格式

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

<title>Insert title here</title>

</head>

<body>

<span th:text="Hello"></span>

<hr/>

<span th:text="${msg}"></span>

</body>

</html>

Thymeleaf 语法讲解

th:text : 在页面中输出值

th.value:可以将一个值放入到input标签的value中

Thymeleaf 内置对象

语法:

1,调用内置对象一定要用#

2, 大部分的内置对象都以s结尾

字符串处理

${#strings.isEmpty(key)} 判断字符串是否为空

${#strings.contains(msg,’T’ )} 判断字符串是否包含指定子串,包含返回true,不包含返回false

${#strings.startsWith(msg,’a’)} 字符串是否以子串开头,是 则返回true,否则返回false

${#strings.endsWith(msg,’a’)} 字符串是否以子串结尾,是则返回true,否则返回false

${#strings.length(msg)} 返回字符串的长度

${#strings.indexof(msg,’h’) } 返回指定字串的下标,如果没有返回-1

${#strings.substring(msg,12)} 截取字串

${#strings.toUpperCase(msg)}

${#strings.toLowerCase(msg)} 字符串转大小写

日期处理

${#dates.format(key)} 格式化日期 默认的以浏览器默认语言为格式化标准

${#dates.format(key,’yyyy/MM/dd’)} 按照自定义的格式做日期转换

${#dates.year(key)} 取年

${#dates.month(key)} 取月

${#date.day(key)} 取日

条件判断

th:if :if判断

<span th:if=”${sex} == ‘男’”>

性别: 男

</span>

<span th:if=”${sex} == ‘女’”>

性别:女

</span>

Th:swith : swith 判断

<div th:swith=”${id}”>

<span th:case=”1”>ID 为1</span>

<span th:case=”2”>ID 为2</span>

</div>

Th : each : 遍历 相当于 foreach

258499f6df834fb9e07901eb7710695a.png

Th:each 也是一个状态变量

bfa7a63017cc77f8390583a0dc3bd217.png

SpringBoot 整合SpringMVC + MyBatis

添加依赖

<!-- SpringBoot启动器 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<!-- Thymeleaf启动器 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-thymeleaf</artifactId>

</dependency>

<!-- Mybatis启动器 -->

<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->

<dependency>

<groupId>org.mybatis.spring.boot</groupId>

<artifactId>mybatis-spring-boot-starter</artifactId>

<version>2.0.0</version>

</dependency>

<!-- mysql驱动 -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

</dependency>

<!--数据源 -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid</artifactId>

<version>1.1.10</version>

</dependency>

编写配置文件 application.properties

a5930510b0722180f9eba43854e96161.png

spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/ssm?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true //参考JDBC参数文件https://blog.csdn.net/hcmony/article/details/80332493

spring.datasource.username=root

spring.datasource.password=1234

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

mybatis.type-aliases-package=com.bjsxt.pojo

配置startBoot :启动springBoot 的文件的注意:

1. 位置注意:

7c597cdd9c6a83413379355e660eed56.png

这样才能操作其他数据文件

c149bedc4f90a51aabef69429865ce4c.png

@MapperScan

用户扫描MyBatis的mapper接口

指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类

添加@MapperScan(“com.winter.dao”)注解以后,com.winter.dao包下面的接口类,在编译之后都会生成相应的实现类

SpringBoot数据校检

1. 在实体类中添加校检规则

4daa454e37e801de9378d9f6c9ac7fb1.png

2. 在Controller中开启校检

f0584a15e641b037986c1e4d6a23f8f6.png

3. 在页面中获取提示信息

2fc75a6c8175ab061851b8b7ca991cd3.png

注意:

04c7247dc0191bd18beb5ab28729fe22.png

参数名称的更改通过 @ModelAttribute(“参数名”)

SpringBoot中异常处理方式 五种

1. 自定义错误页面

SpringBoot,默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制

一旦程序中出现异常SpringBoot 会像/error的url发送请求.在SpringBoot中提供了一个叫BasicExceptionController 来处理/error 请求,然后跳转到默认显示异常的页面来显示异常信息

5b1f6ce388a84276b8a0c3ce4e5794ef.png

如果我们需要将所有的异常统一跳转到自定义的错误页面,需要在src/main/resource/templates目录下创建error.html页面:注意: 名称必须叫error

ac7ccbf4d7d9abcdd80be63569666b03.png

bfabfe0cd22e9e06178be533d6915fe3.png

2. 使用@ExceptionHandle 注解处理异常

ab52ded9a8a6bf0db5d10a5049c72630.png

缺点 : 只能捕获当前controller下产生的异常 ,其他controller捕获不到

3. @ControllerAdvice + @ExceptionHandler 注解处理异常 (全局异常捕获)

fa2ce88d6002bd9bc01e7d0b6139838c.png

32b9255a15f6bcba5882e55f73d99ebd.png

4. 配置SimpleMappingExceptionResolver 处理异常

b6ab015e3086cc05f8abc2144654e75e.png

5. 自定义HandlerExceptionResolver

801323753190bd8b92b8e1e962a0eb46.png

SpringBoot 整合 Junit 做单元测试

38950bee9ff5261c4fe92653b0d9b273.png

SpringBoot的热部署分为两种

1. 使用SpringLoader进行热部署

添加maven插件 使用 SpringLoader

<!-- springloader 插件 -->

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

<dependencies>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>springloaded</artifactId>

<version>1.2.5.RELEASE</version>

</dependency>

</dependencies>

</plugin>

</plugins>

</build>

使用maven的命令启动

51d379721a51a7fbc01068181045ac9d.png

Springloader缺陷 :

1. java代码可以做部署处理,页面代码就不行了

2. SpringLoader热部署程序是在系统后台以进程的形式来运行 ,需要手动关闭该进程

29f0c87d2d078ca5542a38bf022fecd9.png

第二种,在项目中直接使用jar包的方式

7021b722e90a60b60c07027c5828119f.png

启动方式

启动命令:

-javaagent:.libspringloaded-1.2.5.RELEASE.jar -noverify

32482b92eec40bacd2ce2bbd69fac4eb.png

68eabc57b7fec23836081e0467c9a726.png

使用DevTools 实现伪热部署

SrpingLoader 和DevTools 的区别

SpringLoader : SpringLoader 在部署项目时使用的是热部署的方式

DevTools : DevTools 在部署项目时使用的是重新部署的方式 (前端页面也可以部署)

使用方式简单

只需要添加DevTools 的坐标

它就会在你修改代码时自动重新部署

b4e50a74041910e6c297c4030a9e3a7e.png
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐