问:什么是springboot
答:用来简化spring应用的初始搭建以及开发过程,使用特定的方式来进行配置(properties或yml文件),创建独立的spring引用程序 main方法运行
嵌入的Tomcat 无需部署war文件,简化maven配置,自动配置spring添加对应功能starter自动化配置.

问:springboot自动装配是什么
答:spring 和 springMVC的问题在于需要配置大量的参数,spring 查看claspath上可用的框架已存在的应用程序的配置
在此基础上,springboot 提供了配置应用程序和框架所需要的基本配置,这就是自动配置。

问:什么是springboot stater
答:启动器是一套方便的依赖没描述符,它可以放在自己的程序中,你可以一站式的获取你所需要的spring和相关技术
而不需要依赖描述符的通过示例代码搜索和复制黏贴的负载。例如,如果你想使用sping和JPA访问数据库
只需要你的项目包含spring-boot-starter-data-jpa依赖项你就可以完美进行

问:springboot常用的starter有哪些
答:1)spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持
2)spring-boot-starter-data-jpa 数据库支持
3)spring-boot-starter-data-redis redis数据库支持
4)spring-boot-starter-data-solr solr支持
5)mybatis-spring-boot-starter 第三方的mybatis集成starter

问:springboot自动配置的原理
答:在spring程序main方法中添加 @ SpringBootApplication 或者 @ EnableAutoConfiguration
会自动去maven中读取每个starter中的spring.factories文件
该文件里配置了所有需要被创建spring容器中的bean

问:springboot读取配置文件的方式
答:springboot默认读取配置文件为application.properties或者是application.yml

问:springboot集成mybatis的过程
答:添加mybatis的starter maven依赖

org.mybatis.spring.boot
mybatis-spring-boot-starter
1.2.0

在mybatis的接口中 添加@Mapper注解
在application.yml配置数据源信息

问:为什么我们需要spring-boot-maven-plugin
答:1)spring-boot-maven-plugin提供了一些像jar样打包或者运行应用程序的命令
2)spring-boot:run 运行你的 SpringBooty 应用程序。
3)spring-boot:repackage 重新打包你的 jar 包或者是 war 包使其可执行
4)spring-boot:start 和 spring-boot:stop 管理 Spring Boot 应用程序的生命周期
5)spring-boot:build-info 生成执行器可以使用的构造信息。

问:什么是微服务
答:以前的模式是所有的代码在同一个工程中,部署在同一个服务器中,同一个项目的不同模块不同功能互相抢占资源,微服务将工程根据不同的业务
规则拆分成微服务,微服务部署在不同的机器上,服务之间进行相互调用,Java微服务的框架有 dubbo(只能用来做微服务),spring cloud(提供了
服务的发现,断路器等)

问:REST是什么
答:是一种软件架构风格,在REST中的一切都被认为是一种资源,每个资源由URI标识,使用统一的接口处理资源,如HTTP请求中的POST,GET,PUT,DELETE
类似创建读取更新和删除操作,无状态,每个请求是一个独立的请求,REST原则:连接无状态,有一致接口,资源均有独一无二的URI,传输的内容是
超媒体如json。

问:springcloud如何实现服务的注册和发现
答:服务在发布时 指定对应的服务名,服务名包括了IP地址和端口,将服务注册到注册中心eureka或者zookeeper,这一过程是springcloud自动实现
只需要在main方法添加 @ EnableDisscoveryClient,同一个服务修改端口就可以启动多个实例。

问:springcloud中的组件有那些
答:独挑大梁,独自启动不需要依赖其它组件
1)Eureka,服务注册中心,特性有失效剔除、服务保护
2)Dashboard,Hystrix仪表盘,监控集群模式和单点模式,其中集群模式需要收集器Turbine配合
3)Zuul,API服务网关,功能有路由分发和过滤
4)Config,分布式配置中心,支持本地仓库、SVN、Git、Jar包内配置等模式
润物无声,融合在每个微服务中、依赖其它组件并为其提供服务
1)Ribbon,客户端负载均衡,特性有区域亲和,重试机制
2)Hystrix,客户端容错保护,特性有服务降级、服务熔断、请求缓存、请求合并、依赖隔离
3)Feign,声明式服务调用本质上就是Ribbon+Hystrix
4)Stream,消息驱动,有Sink、Source、Processor三种通道,特性有订阅发布、消费组、消息分区
5)Bus,消息总线,配合Config仓库修改的一种Stream实现,
6)Sleuth,分布式服务追踪,需要搞清楚TraceID和SpanID以及抽样,如何与ELK整合

问:springcloud和dubbo的区别
答:springcloud服务注册中心是Spring Cloud Netflix Eureka
dubbo的注册中心一般是zookeeper
dubbo只是类似Netflix的一个子集只有注册中心,其他springcloud组件没有
springcloud的调用方式是REST API
dubbo的调用方式是RPC
服务提供方与调用方接口依赖方式太强
我们为每个微服务定义了各自的service抽象接口
并通过持续集成发布到私有仓库中
调用方应用对微服务提供的抽象接口存在强依赖关系
REST方式的服务依赖要比RPC方式的依赖更为灵活
Dubbo的文档可以说在国内开源框架中算是一流的,非常全,并且讲解的也非常深入
国内开发者来说,阅读起来更加容易上手

更多推荐

Java面试题分享-Springcloud