SpringBoot + SpringCloud 技术知识点自测

Posted 毕小宝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot + SpringCloud 技术知识点自测相关的知识,希望对你有一定的参考价值。

背景

三年前项目开发工具从 SpringMVC 转向 SpringBoot ,当时不了解 SpringCloud ,为了学习这两个技术知识,买了一个专栏。

今天突然翻到了专栏的学习笔记,决定再看一遍专栏的内容,顺便检验一下自己这两个技术的掌握程度。

这几年用 SpringBoot 和 SpringCloud 大大小小也参与过几个项目,用得也相当熟练了,结合使用经验再看一遍专栏的内容,想必也能碰撞出一些新想法吧。

SpringBoot

基础

  1. SpringBoot 是什么?约定大于配置的大容器。
  2. SpringBoot 怎么使用外部 Tomcat?继承 SpringBootServletInitializer 类。
  3. SpringBoot 怎么去掉 Server 服务?配置 web-application-type:none
  4. SpringBoot 打包使用的 maven 插件有哪些?
  5. 配置类注解 SpringBootConfiguration 来代替 Configuration,定义配置信息类。@EnableConfigurationProperties(XXXProperties.class,XXXProperties.class)这个注解的参数类都是用 @ConfigurationProperties 注解标识的类,需要该注解或者 @Component 使得它们能够被 IOC 识别,如果没有 @Component 那么这个配置文件对应的类就不会生效。两种方式都是将被 @ConfigurationProperties 修饰的类,加载到 Spring 环境中。
  6. @EnableAutoConfiguration@Configuration 的关系:前者自动将后者注解类中的实例注入 IOC 容器,它是 SpringBoot 的核心类。即它会默认配置启动类所在包及其子包下的所有标注了 Configuration 注解的类。
  7. 拦截器及 WebMvcConfigurationSupport 默认对静态资源的坑点。
  8. @RestControllerAdvice@ExceptionHandler 实现统一响应和异常处理。
  9. @Validated 数据校验。
  10. RequestCondition 实现接口版本控制。

原理

@SpringBootApplication 开始的启动之路和 EnableAutoConfiguration 的自动装配。SpringMVC 基于 XML 的配置】 VS 【SpringBoot 的 JavaConfig 配置】。

SpringApplication 的构造函数

  1. 计算 web 的类型。
  2. 设置 ApplicationContextInitializer 完成一些初始化工作。
  3. 初始化容器事件监听器 ApplicationListener
  4. 找出启动类。

run 的执行流程:

  1. 创建 StopWatch 并启动。
  2. 启动 SpringApplicationRunListeners 监听器,它读取 spring.factories 配置完成初始化

SpringCloud

  1. gateway 自定义 GatewayFilter ,改写 ServerWebExchangeUtils.GATEWAY_REQUEST_URL_ATTR 转发请求到固定服务器,对于 WebSocket 推送请求来说很常用的一种做法,保证每次请求处理的服务器是同一个。
  2. gateway 注入 DefaultErrorWebExceptionHandler 的实现实例完成统一的异常处理。
  3. feign 的声明式 Http 客户端的定义及两种 fallback 的方式:特定和全局。
  4. config 组件,不太理解,依赖 git 和消息中间件。
  5. Feign、Ribbon、RestTemplate 之间的关系:Feign 依赖了 Ribbon;Ribbon 是一个负载均衡组件;RestTemplate 是 Spring 的一个 http 客户端,加上 @LoadBalnaced 就具有了 Ribbon 的负载均衡能力。
  6. Feign、Hystrix、Ribbon 的超时配置的关系,超时时间设置原则:Ribbon < Hystrix。

以上是关于SpringBoot + SpringCloud 技术知识点自测的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot与SpringCloud版本对应关系

SpringBoot和SpringCloud?

SpringCloud与SpringBoot区别

5.springcloud微服务架构搭建 之 《springboot集成Hystrix》

SpringCloud和SpringBoot关系

SpringBoot, SpringMvc, SpringCloud