SpringBoot + SpringCloud 技术知识点自测
Posted 毕小宝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot + SpringCloud 技术知识点自测相关的知识,希望对你有一定的参考价值。
背景
三年前项目开发工具从 SpringMVC 转向 SpringBoot ,当时不了解 SpringCloud ,为了学习这两个技术知识,买了一个专栏。
今天突然翻到了专栏的学习笔记,决定再看一遍专栏的内容,顺便检验一下自己这两个技术的掌握程度。
这几年用 SpringBoot 和 SpringCloud 大大小小也参与过几个项目,用得也相当熟练了,结合使用经验再看一遍专栏的内容,想必也能碰撞出一些新想法吧。
SpringBoot
基础
- SpringBoot 是什么?约定大于配置的大容器。
- SpringBoot 怎么使用外部 Tomcat?继承
SpringBootServletInitializer
类。 - SpringBoot 怎么去掉 Server 服务?配置
web-application-type:none
。 - SpringBoot 打包使用的 maven 插件有哪些?
- 配置类注解
SpringBootConfiguration
来代替Configuration
,定义配置信息类。@EnableConfigurationProperties(XXXProperties.class,XXXProperties.class)
这个注解的参数类都是用@ConfigurationProperties
注解标识的类,需要该注解或者@Component
使得它们能够被 IOC 识别,如果没有@Component
那么这个配置文件对应的类就不会生效。两种方式都是将被@ConfigurationProperties
修饰的类,加载到 Spring 环境中。 @EnableAutoConfiguration
和@Configuration
的关系:前者自动将后者注解类中的实例注入 IOC 容器,它是 SpringBoot 的核心类。即它会默认配置启动类所在包及其子包下的所有标注了 Configuration 注解的类。- 拦截器及
WebMvcConfigurationSupport
默认对静态资源的坑点。 @RestControllerAdvice
和@ExceptionHandler
实现统一响应和异常处理。@Validated
数据校验。RequestCondition
实现接口版本控制。
原理
从 @SpringBootApplication
开始的启动之路和 EnableAutoConfiguration
的自动装配。SpringMVC 基于 XML 的配置】 VS 【SpringBoot 的 JavaConfig 配置】。
SpringApplication 的构造函数
- 计算 web 的类型。
- 设置
ApplicationContextInitializer
完成一些初始化工作。 - 初始化容器事件监听器
ApplicationListener
。 - 找出启动类。
run 的执行流程:
- 创建
StopWatch
并启动。 - 启动
SpringApplicationRunListeners
监听器,它读取 spring.factories 配置完成初始化
SpringCloud
- gateway 自定义
GatewayFilter
,改写ServerWebExchangeUtils.GATEWAY_REQUEST_URL_ATTR
转发请求到固定服务器,对于 WebSocket 推送请求来说很常用的一种做法,保证每次请求处理的服务器是同一个。 - gateway 注入
DefaultErrorWebExceptionHandler
的实现实例完成统一的异常处理。 - feign 的声明式 Http 客户端的定义及两种
fallback
的方式:特定和全局。 - config 组件,不太理解,依赖 git 和消息中间件。
- Feign、Ribbon、
RestTemplate
之间的关系:Feign 依赖了 Ribbon;Ribbon 是一个负载均衡组件;RestTemplate
是 Spring 的一个 http 客户端,加上@LoadBalnaced
就具有了 Ribbon 的负载均衡能力。 - Feign、Hystrix、Ribbon 的超时配置的关系,超时时间设置原则:Ribbon < Hystrix。
以上是关于SpringBoot + SpringCloud 技术知识点自测的主要内容,如果未能解决你的问题,请参考以下文章