一、springboot基本介绍
1、是什么
spring:IOC、AOP(优点:简化开发;缺点:配置多)
springboot:约定大于配置(减少繁重的配置,)
2、特性
快速搭建、减少配置、开箱即用、内嵌Tomcat容器、starter自动依赖和版本控制、方便监控(使用spring boot actuator组件提供应用的系统监控,查看应用配置详细信息)
3、微服务
架构思想,架构风格,单体的应用拆分为多个微小服务组合,通过http通信
单体架构:all in one,所有服务封装在一个应用中,构建到一个war包中(优点:易于开发测试,部署简单,扩展方便;缺点:项目臃肿,资源无法隔离,无法灵活拓展,耦合性高)
微服务架构:根据业务拆分为多个应用,拓展方便,减少冗余
二、springboot快速入门
1、开发环境
jdk、maven、idea
2、传统框架开发web项目、springboot开发web项目
开发更加快速,关注于业务开发,不在需要手写许多的配置,默认自动配置
3、springboot项目结构
pom:spring-boot-starter-parent、spring-boot-maven-plugin
三、springboot原理分析
启动类核心:
SpringbootApplication注解:(Springboot启动类注解)
SpringbootConfiguration注解(标明是Springboot的配置类)
Configuration注解(标明是配置类)
Component注解(注入bean,交给spring)
EnableAutoConfiguration注解(开启自动配置)
AutoConfigurationPackage注解(自动配置包)
Import注解(默认扫描启动类所在目录(包)下所有类到spring容器中进行管理)
Import注解(自动配置导入选择器,根据项目判断需要哪些配置信息然后把默认的配置内容导入到spring容器中进行管理)
ComponentScan注解(组件扫描和自动装配,用来指定扫描容器的范围)
四、springboot配置说明
1、springboot中的配置文件
properties配置文件、yml配置文件
application.properties、application.yml,默认调用properties配置文件,若同时存在,properties优先级大于yml
文件存放在src/main/resource目录,或者类路径/config目录下,默认读取application开头的配置文件
2、yml语法
标记语言,更易阅读,以数据为中心,相比json、xml更适合做配置文件
yml基本语法:
key: value(value前面要有空格,可以有多个,不能用tab代替)
大小写敏感
字符串默认不需要使用引号。单引号不能识别转移字符,原样读取输出;双引号识别转义字符。比如"abc \n cde"实际输出会换行,而'abc \n cde'不会换行
#注释
yml支持的三种数据类型:
字面量:直接量,单个不能拆分的值(数字、字符串、布尔)(key :value)
对象:键值对形式
数组:字面量/对象的集合。如 数组:(key: [a,b,c]),list:(key: [{key1: value1,key2: value2},{key1: value1,key2: value2}])
3、properties和yml的读取
1> 定义配置实体类,添加注解@Component,@ConfigurationProperties(prefix = "前缀")
2> value注入:
${字面量},${数字、字符串、布尔}
${配置文件中的key},如:@value("${timeout}")
#{SpEL表达式},如:@value("#{timeout}")、@value("#{11*2}")
3> 自定义配置文件test.properties
定义配置实体类,添加注解@Component,@ConfigurationProperties(prefix = "前缀"),@PropertySource("classpath:test.properties"):指定配置文件及路径
properties配置中文乱码时,需在idea中进行文件编码配置
五、springboot web开发
1、thymeleaf
spring.thymeleaf.cache=false(设置页面缓存无效,修改页面立即生效,避免修改后打开还是缓存的页面)
spring-boot-starter-thymeleaf依赖
参见:https://blog.youkuaiyun.com/wangww3/article/details/106966514
2、springboot设置欢迎页面
动态页面:自定义MVC配置类,@Configuration注解,实现WebMvcConfigurer,重写addViewController方法进行映射关系配置:registry.addViewController("/").setViewName("login.html");将路径"/"映射到login.html页面
3、springboot接口开发
给前端传值:接口添加入参ModelMap modelMap;modelMap.addAttribute(name,value);
自定义拦截器:实现HandlerInterceptor的preHandle方法,可通过操作会话拦截;自定义MVC配置添加拦截器:registry.addInterceptor(自定义拦截器),设置拦截的请求路径,或排除拦截的请求路径
六、Restful的介绍及使用
1、Restful介绍
URI:包含URL、URN(URI:统一资源标识符,URL:统一资源定位符,URN:统一资源名称)
REST产生:前端与后端通信的统一机制,制定统一的接口访问方式,以应对各种不同的前端来访问
REST概念:表述性状态转移,是一种架构风格
RESR原则:1、网络上所有事物可被抽象为资源 2、每个资源都有唯一的资源标识符URI 3、同一个资源具有多种表现形式(xml、json等) 4、对资源的操作不会改变资源标识符 5、所有操作都是无状态的
RESTful:遵守了rest原则的web服务,rest式的web服务是一种ROA(面向资源的架构),restful架构的一个核心概念是“资源”
http请求:get:查找/获取,post:新增/创建,put:替换,patch:修改,delete:删除。
不同请求方式表明资源的不同操作类型,传统的接口url通过不同的path代表不同接口资源操作,restful中定义不同的资源操作,甚至不用修改接口path,只需要表明不同的http请求方式
2、Restful在Springboot中的应用
通过以下五种不同注解支持前端请求,表述资源操作类型:
@GetMapping,处理get查询请求
@PostMapping,处理post新增请求
@PutMapping,用于替换/更新资源
@PatchMapping,用于更新部分资源
@DeleteMapping,处理删除请求
结合spring注解来传递前端数据:
@PathVariable,用于接受url路径上的参数
@ModelAttribute,用于直接接受url?后面的参数,如url?id=123&name=456,然后直接转为pojo
3、Spring Data REST 的使用
浏览器postman插件
post、put可用于新增、替换(全部替换),patch用于部分修改