1.spring boot注解
1.1 @SpringBootApplication
是spring的启动类
此注解等同于@Configuration+@EnableAutoConfiguration + @ComponentScan的组合
1.2 @SpringBootConfiguration
@SpringBootCnfiguration 是@Configuration的派生注解,和@Configuration的功能意义,标注这个类是个配置类,不是@springbootConfiguration是spring boot的注解,而@configuration是spring的注解
1.3 @Configuration
通过对bean对象的操作替代spring中xml文件
1.4 @EnableAutoConfiguration
Spring boot的自动配置,尝试根据你添加的jar依赖自动配置你的spring应用,是@AutoConfigurationPackage和@Import的组合
1.5 @AutoConfigurationPackage
自动注入启动类所在包下所有加了注解的类(@Controller,@Service等)以及配置类(@configuration)
1.6 @import
直接导入普通类
导入实现的ImportSelector接口的类
导入实现的ImportBeanDefinitionRegister接口的类
1.7@ComponentScan
组件扫描,可以自动发现一些bean
1.8 @ConfigurationPropertiesScan
@ConfigurationPropertiesScan扫描配置属性。@EnableConfigurationProperties注解的作用是让使用@ConfigurationProperties的类生效
Spring boot常见注解
@RestController
@RestController相当于@Controller + @ResponseBody
使用@RestController注解Controller中的方法,Controller是无法返回到页面的,相当于在方法前添加了@ResponseBody注解,InternalResourceViewResolver不起作用,就没办法跳转传输数据。若返回数据,则为方法return的内容
@GetMapping
@GetMapping是@RequestMapping(method=RequestMethod.GET)的缩写
@PostMapping
@PostMapping是@RequestMapping(method=RequestMethod.POST)的缩写
@PutMapping
@PutMapping是@RequestMapping(method=RequestMethod.PUT)的缩写
@DeleteMapping
@DeleteMapping是@RequestMapping(method=RequestMethod.DELETE)的缩写
Spring Boot创建项目的三种方式
1通过官网创建
2.使用idea中spring initalizer创建
和1类似
3.创建maven工程,修改pom文件
修改pom文件
Spring Boot结构
1 POM文件
Sping Boot整合Web技术
整合servlet技术
1 通过注解扫描完成整合servlet
编写servlet类,在servlet中加入注解@WebServlet(name=””,urlpattern=””)
在启动弄类中加上注解@ServletComponentScan, @ServletComponentScan在spring boot启动时扫描@WebServlet注解,并将该类实例化
2通过配置类
1 编写servlet类,不需使用注解@WebServlet
创建servlet配置类,使用@Configuration注解,使用@Bean完成servlet的注册,如图
整合filter
使用注解方式
编写filter,使用@webfilter注解(是javax.servlet.*包下的filter)
在启动弄类中加上注解@ServletComponentScan, @ServletComponentScan在spring boot启动时扫描@WebServlet注解,并将该类实例化
使用配置类
编写servlet类,不需使用注解@WebServlet
创建filter配置类,使用@Configuration注解,使用@Bean完成Filter的注册
整合Listener
通过注解扫描的方式
编写listener,使用@weblistener
在启动弄类中加上注解@ServletComponentScan, @ServletComponentScan在spring boot启动时扫描@WebServlet注解,并将该类实例化
通过配置类
编写servlet类,不需使用注解@WebListener
创建Listener配置类,使用@Configuration注解,使用@Bean完成ServletListener的注册
Spring boot访问静态资源
Static 目录
Spring boot通过static目录静态资源。静态资源存放的目录必须是static
Templates目录
在Spring Boot中不推荐使用jsp作为视图层技术,而是默认使用Thymeleaf来做动态页面。Templates目录这是存放Thymeleaf的页面。
默认存放目录
/META-INF/resources/
/resources/
/static/
/public/
自定义存放目录
在配置文件中修改spring.resources.static-locations多个目录使用逗号分隔如:
spring.resources.static-locations = classpath:/static/,/public/
Spring Boot整合JSP
- 创建webapp目录和在webapp中创建WEB-INF目录,在WEB-INF中创建jsp目录,修改pom文件添加jsp依赖
- 将webapp标记为moudles中的Web
- 修改spring boot中配置视图层的目录
Spring.mvc.view.prefix=/WEB-INF/jsp/ 保存jsp文件的文件目录
Spring.mvc.view.suffix=.jsp jsp文件的后缀名
在聚合项目中,无法找到jsp文件,需要制定工作目录。
Spring boot整合freemaker
- 创建项目
- 修改pom文件,添加freemake依赖
Spring 整合Thymeleaf
Thymeleaf的优点是它是基于HTML的,即使视图没有渲染成功,也是一个标准的HTML页面。
添加依赖
Thymeleaf基本使用
Thymeleaf基本语法
命名空间 xmlns:th=”http://www.thymeleaf.org”
- 字符串与变量输出
th:text 在页面中输出值
th:value 可以一个值放入到input标签的value中 针对input标签
- 字符串操作
使用内置对象
- 引用内置对象需要使用#
- 大部分内置对象的名称都以s结尾。如:strings,numbers,dates
1
2
3${#strings.isEmpty(key)} 判断key是否为空串
${#strings.contains(msg,T)} 判断字符串msg中是否包含T子串 - 条件判断
th:if / th:switch和th:case
th:case = “*” 表示java中switch的default
- 迭代
th:each=”object : ${set}”
th:each迭代Map
- Thymeleaf的配置
Spring.thymeleaf.cache=false #关闭页面缓存
Spring.thymeleaf.encoding=UTF-8设置页面编码
Spring.thymeleaf.mode=HTML5 #视图解析目标,若使用html5则需要加入此项
SpringBoot整合JDBC
添加依赖
添加驱动
2配置数据源
添加druid数据源依赖
使用@ConfigureProperties配置jdbc
@ConfigurePropertie 只能读取application.properties或者application.yml
Properties文件中
使用@EnableConfigurationProperties指定加载的类
也可以在配置类中使用构造方法和作为参数传递
可以将@ConfigurationProperties(prefix = “jdbc”)放在函数之前
Spring boot默认使用HikariDataSource数据源
Application.properties配置文件中配置
更换数据源
实现一个查询业务
Dao层
Services层
SpringBoot整合MyBatis
添加mysql驱动和mybatis依赖
配置maven的generator插件,添加依赖
指定配置 文件
配置文件内容
1 |
|
使用资源拷贝插件
1 | <!--资源拷贝插件 mapper.xml不在resources夹中--> |
在启动类上添加@MapperSan注解
@MapperScan(“cn.silver.springbootmybaits.Dao”)
扫描xml所在的包名
1 | #扫描classpath 中mapper下的映射配置文件,当配置文件放在resources文件中 |
Spring boot异常处理和单元测试
异常处理
- 自定义错误页面
Spring boot默认的处理异常的机制:spring boot默认的已经提供了一套处理异常的机制,一旦程序中出现了异常springboot会向/error的url发送请求。在spring boot中提供一个名为BasicErrorController来处理/error请求,然后跳转到默认显示异常的页面展示异常信息。如果我们需要将所有的异常同一跳转到自定义的错误页面,需要在src/main/resouces/templates目录下创建error.html页面。注意:页面名称必须叫error
- 通过@ExceptionHandler处理
通过注解对不同的错误进行处理
- 通过@ControllerAdvice与@ExceptionHandler注解处理异常
- 创建全局异常处理类
- 通过SimpleMappingExceptionResolver对象处理
创建全局异常类
- 通过自定义HandlerExceptionResolver对象处理异常
创建全局异常处理类
1 |
|
Spring Boot整合Junit单元测试
Spring boot 2.x使用Junit5作为测试平台
- 修改pom文件添加Test依赖
排除提供junit3 和junit4测试
- 编写测试代码
Spring Boot服务端数据校验
添加依赖
1 | <dependency> |
对数据校验
使用注解进行数据校验
@NotNull 对基本数据类型的对象类型做非空校验
@NotBlank 对对字符串类型做非空校验
@NotEmpty 对集合类型做非空校验
使用@Validated设置校验数据
自定义错误信息
@NotNull(message = “tips”) 对基本数据类型的对象类型做非空校验,message表示提示信息
在配置文件中自定义提示信息,使用Hiberaiter-validator框架
配置文件必须是ValidationMessages.properties
Spring boot 使用devtools进行热部署
添加Devtools依赖或者新建项目的时候选中devtools