-
什么是 spring boot?
是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。 -
spring boot优点
如:
独立运行
简化配置
自动配置
无代码生成和XML配置
应用监控
上手容易 -
spring boot 核心配置文件是什么?
application 主要用于 Spring Boot 项目的自动化配置。
bootstrap 使用 -
spring boot 配置文件有哪几种类型?它们有什么区别?
.properties 和 .yml,它们的区别主要是书写格式不同
同样的配置中properties优先 -
Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?
@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解:
(1)@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
(2)@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
(3)@ComponentScan:Spring组件扫描。 -
开启 Spring Boot 特性有哪几种方式?
1)继承spring-boot-starter-parent项目
2)导入spring-boot-dependencies项目依赖 -
Spring Boot 需要独立的容器运行吗?
可以不需要,内置了 Tomcat/ Jetty 等容器。 -
运行 Spring Boot 有哪几种方式?
1)打包用命令或者放到容器中运行
2)用 Maven/ Gradle 插件运行
3)直接执行 main 方法运行 -
Spring Boot 自动配置原理是什么?
注解 @EnableAutoConfiguration, @Configuration, @ConditionalOnClass 就是自动配置的核心,首先它得是一个配置文件,其次根据类路径下是否有这个类去自动配置。 -
什么是 Spring Boot Stater ?
启动器是一套方便的依赖,没有描述,可以方便的一站式获取所需要的spring和相关技术
常见stater会包含4个方面
自动配置文件,根据classpath是否存在指定的类来决定是否要执行该功能的自动配置。
spring.factories 非常重要 知道Spring Boot 找到指定的自动配置文件
endpoint: 可以理解为一个admin 包含对服务的描述 界面 交互
health indicator: 该statart提供的服务健康指标 -
springboot常用的starter有哪些
spring-boot-starter-web 嵌入式tomcat和web开发需要servlet和jsp支持
spring-boot-starter-data-jpa 数据库支持
spring-boot-starter-data-redis redis数据库支持
spring-boot-starter-data-solr solr支持
mybatis-spring-boot-starter 第三方集成starter -
Spring Boot Starter的工作原理
1, springboot在启动时扫描项目所依赖的jar包 寻找spring.factories
2, 根据spring.factories配置加载AutoConfigure类
3, 根据@Conditional注解的条件,进行自动配置并将Bean注入到spring Context -
为什么我们需要 spring-boot-maven-plugin?
spring-boot-maven-plugin 提供了一些像
jar 一样打包或者运行应用程序的命令。 spring-boot:run 运行你的 SpringBooty 应用程序。
spring-boot:repackage 重新打包你的 jar 包或者是 war 包使其可执行 spring-boot:start 和
spring-boot:stop 管理 Spring Boot 应用程序的生命周期(也可以说是为了集成测试)。
spring-boot:build-info 生成执行器可以使用的构造信息。 -
什么是Spring Cloud?
Spring cloud流应用程序启动器是基于Spring Boot的Spring集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。 -
服务注册和发现是什么意思?Spring Cloud如何实现?
于所有服务都在Eureka服务器上注册并通过调用Eureka服务器完成查找,因此无需处理服务地点的任何更改和处理。 -
负载平衡如何实现的? Ribbon
在消费端添加注解@LoadBalanced -
服务雪崩 服务熔断 服务降级
服务雪崩: 调用链中下游服务出现故障,导致上游的请求也会出现阻塞,服务崩溃,进而整个服务链都崩溃了
服务熔断: 当下游服务因为某些原因变得不可用或者响应过慢时,上游服务为了保证自己整体服务的可用性,不再继续调用下游服务,直接返回,快速释放资源.如果目标服务情况好转则恢复调用
服务降级: 当下游服务因为某些原因响应过慢,下游服务主动停掉一些不太重要的业务,快速释放资源,增加响应速度; 服务降级有很多策略: 开关降级,限流降级 熔断降级
服务熔断只是服务降级的一种方式 -
什么是Hystrix?它如何实现容错?
熔断器:当服务不可用的时候迅速返回一个错误而不是超时等待
Fallback方法功能
Feign自带熔断器 -
spring Cloud相关模块
Spring Cloud Netflix:针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。
Netflix Eureka:注册中心
Netflix Hystrix:熔断器 容错管理工具,旨在通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
Netflix Zuul:网关 边缘服务工具,是提供动态路由,监控,弹性,安全等的边缘服务。
Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。 -
Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?
Zookeeper保证了CP(C:一致性,P:分区容错性),Eureka保证了AP(A:高可用)
Zookeeper 一致性 Zookeeper集群leader有挂掉的情况,会重新选举新的leader,这个事件就不可用
Eureka 各个节点 是平等的 客户端发现连接失败时,会自动切换到其他节点 -
ribbon和feign区别
1\依赖和注解不同
2\ 服务指定位置不同 Ribbion是在@RibbonClient注解上生命 Feign则在定义抽象方法的接口中使用
3\ 调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。 Feign则是在Ribbon的基础上进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成抽象方法即可,不需要自己构建http请求。不过要注意的是抽象方法的注解、方法签名要和提供服务的方法完全一致。
https://blog.csdn.net/lyhkmm/article/details/83180415
https://www.jianshu.com/p/63ad69c480fe
https://www.cnblogs.com/3xmq/p/springboot.html
https://blog.csdn.net/moakun/article/details/82817757
https://blog.csdn.net/panhaigang123/article/details/79587612
https://blog.csdn.net/zl1zl2zl3/article/details/83715633
https://blog.csdn.net/qq_22182989/article/details/80562141
https://blog.csdn.net/forezp/article/details/88149085
https://blog.csdn.net/qq_31263721/article/details/87625871