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】