SpringBoot从零开始
1、Spring Boot 简介
简化Spring应用开发的一个框架、整个Spring技术栈的一个大整合、J2EE开发的一站式解决方案。
2、编写SpringBoot Hello
【1】maven创建项目,选择jar方式【IDEA】【Eclipse直接选择jar】
【2】在pom.xml文件导入SpringBoot的starter
【3】创建主启动文件【在主启动文件的子包下,springboot会自动扫描子包的配置】
【4】创建一个Controller测试,该包在主启动文件的子包下
【5】启动主文件测试访问
3、@SpringBootApplication
@SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot 就应该运行这个类的main方法来启动SpringBoot应用;
@SpringBootConfiguration:标注在某个类上,表示这是一个Spring Boot的配置类;
@Configuration:表示这是一个配置文件类
@ComponentScan:扫包注解
@EnableAutoConfiguration:开启自动配置功能,告诉SpringBoot开启自 动配置功能;这样自动配置才能生效;
Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将 这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;
@AutoConfigurationPackage:自动配置包
@Import:Spring的底层注解@Import,给容器中导入一个组件;
4、resources文件夹中目录结构
【1】static:保存所有的静态资源; js css images;
【2】templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页 面);可以使用模板引擎(freemarker、thymeleaf);
【3】application.yml【application.properties】:Spring Boot应用的配置文件;可以修改一些默认设置;
5、配置文件值注入
将yml文件注入到实体bean中。
测试数据
6、@Value获取值和@ConfigurationProperties获取值比较
7、@PropertySource&@ImportResource&@Bean
@PropertySource:加载指定的配置文件;
@ImportResource:导入Spring的配置文件,让配置文件里面的内容生效;
Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别; 想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上
8、yml支持多文档块方式
9、配置文件加载的位置
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文 件
【1】–file:./config/
【2】–file:./
【3】–classpath:/config/
【4】–classpath:/
优先级由高到底,高优先级的配置会覆盖低优先级的配置;SpringBoot会从这四个位置全部加载主配置文件;互补配置;
10、SpringBoot日志
SpringBoot:底层是Spring框架,Spring框架默认是用JCL;
SpringBoot选用 SLF4j和logback;
11、SLF4j使用
每一个日志的实现框架都有自己的配置文件。使用slf4j以后,配置文件还是做成日志实现框架自己本身的配置文 件;
SpringBoot默认帮我们配置好了日志.使用的就是SLF4j和logback;
12、指定配置
给类路径下放上每个日志框架自己的配置文件即可;SpringBoot就不使用默认配置的了
logback.xml:直接就被日志框架识别了;
logback-spring.xml:日志框架就不直接加载日志的配置项,由SpringBoot解析日志配置,可以使用SpringBoot 的高级Profile功能
13、SpringBoot对静态资源的映射规则
"/**" 访问当前项目的任何资源,都去(静态资源的文件夹)找映射
欢迎页; 静态资源文件夹下的所有index.html页面;被"/**"映射
webjars:以jar包的方式引入静态资源:https://www.webjars.org/
【*】所有 /webjars/** ,都去 classpath:/META-INF/resources/webjars/ 找资源;
访问地址:http://localhost:9001/webjars/jquery/3.3.1-2/jquery.js
配置文件设置静态资源的位置:
14、引入thymeleaf模板引擎
15、thymeleaf使用
语法规则:th:text;改变当前元素里面的文本内容;th:任意html属性;来替换原生属性的值
*{...}:选择表达式:和${}在功能上是一样,配合 th:object="${session.user}:
#{...}:获取国际化内容
@{...}:定义URL
~{...}:片段引用表达式
16、扩展 SpringMvc
编写一个配置类(@Configuration),是WebMvcConfigurerAdapter类型;不能标注@EnableWebMvc;
如果加上@EnableWebMvc表示全面接管了SpringMvc的配置,SpringBoot自动配置的SpringMvc设置便会失效。
17、自定义拦截器
18、错误处理机制
有模板引擎的情况下;error/状态码; 【将错误页面命名为 错误状态码.html 放在模板引擎文件夹里面的 error文件夹下】,发生此 状态码的错误就会来到 对应的页面;
我们可以使用4xx和5xx作为错误页面的文件名来匹配这种类型的所有错误,精确优先(优先寻找精确的状态 码.html);
页面能获取的信息;
timestamp:时间戳
status:状态码
error:错误提示
exception:异常对象
message:异常消息
errors:JSR303数据校验的错误都在这里
【*】没有模板引擎(模板引擎找不到这个错误页面),静态资源文件夹下找;
【*】以上都没有错误页面,就是默认来到SpringBoot默认的错误提示页面;
-----------------------------------------------------------------------------------------------------------------------------
JSON全局异常(浏览器和客户端都返回JSON错误)
19、修改SpringBoot内置Servlet容器的相关配置
方式1:修改application.yml或者application.properties
方式2:、编写一个EmbeddedServletContainerCustomizer:嵌入式的Servlet容器的定制器;来修改Servlet容器的 配置
20、SpringBoot注册Servlet三大组件
由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文 件。
【1】注册Servlet
【2】注册Filter
【3】注册Listener
21、SpringBoot配置SpringMvc前端控制拦截方式
22、切换嵌入式Servlet容器
SpringBoot默认使用是tomcat容器。
【jetty】
【Undertow】