什么是Spring Boot?
Spring Boot是Spring 开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。
Spring Boot有哪些优点?
Spring Boot主要有以下优点:
1、容易上手,提高了开发效率
2、开箱即用,远离繁琐的配置
3、提供了一系列大型项目通用的非业务性功能
4、没有代码生成,也不需要xml配置
5、避免大量的Maven导入和各种版本冲突
什么是JavaConfig?
SpringJavaConfig是Spring社区的产品,它提供了配置Spring IoC容器的纯Java方法。因此有助于避免使用XML配置。使用JavaConfig的优点在于:
1、面向对象的配置。由于配置被定义为javaConfig中的类,因此用户可以充分利用Java中面向对象功能。一个配置类可以继承另一个,重写它的Bean方法等。
2、减少或消除XML配置。基于依赖注入原则的外化配置的好处已被证明。
3、类型安全和重构友好
比较一下Spring Security 和Shiro各自的优缺点?
由于Spring Boot 官方提供了大量非常方便的开箱即用的Starter,包括Spring Security 的Starter,使得在Spring Boot中使用Spring Security变得更加容易,甚至只需要加一个依赖就可以保护所有接口,所以,如果是Spring Boot项目,一般选择Spring Security。
Shiro和Spring Security相比,主要有以下特点:
1、Spring Security是一个重量级的安全管理框架;Shiro则是一个轻量级的安全管理框架
2、Spring Security概念复杂,配置繁琐;Shiro概念简单、配置简单
3、Spring Security功能强大;Shiro 功能简单
Spring Boot达成的jar和普通的jar有什么区别?
Spring Boot项目打包成的jar是可执行jar,这种jar可以直接通过java jar xxx.jar命令来运行,这种jar不可以作为普通的jar被其他项目依赖,即时依赖了也无法使用其中的类。
Spring Boot的jar无法被其他项目依赖,主要还是他和普通jar结构不同。普通的jar包解压之后就是包名,包里就是我们的代码,而Spring Boot打包成的可执行jar解压后,在\Boot-INF\classes目录下才是我们的代码,因此无法被直接引用,如果非要引用,可以在pom.xml文件中增加配置,将Spring Boot项目打包成两个jar,一个可执行,一个可引用。
运行Spring Boot有哪几种方式?
1、打包用命令行或者放到容器中运行
2、用Maven/Gradle插件运行
3、直接执行main方法运行
Spring Boot原理
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式进行配置,从而使开发人员不再需要定义模版化的配置。通过这种方式,Spring Boot致力于快速开发领域成为领导者。其特点如下:
1、创建独立的Spring应用分程序
2、嵌入的Tomcat,无需部署WAR文件
3、简化Maven配置
4、自动配置Spring
5、提供生产就绪型功能,如指标,健康检查和外部配置
6、绝对没有代码生成和XML没有要求配置
什么是Spring Cloud?
Spring Cloud是一系列框架的有序集合,它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟·、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具。
使用Spring Cloud有什么优势?
使用Spring Boot开发分布式微服务时,我们面临一下问题
- 与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题
- 服务发现-服务发现工具管理群集中的流程和服务如何查找和交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。
- 冗余-分布式系统中的冗余问题
- 负载均衡-负载均衡改善跨多个计算资源的工作负荷
- 性能-问题 由于各种运营开销导致的性能问题
服务注册和发现是什么意思?Spring Cloud如何实现?
当我们开始一个项目时,我们通常会在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。Eureka服务注册和发现可以在这种情况下提供帮助。由于所有服务都在Eureka服务器上注册并通过调用Eureka服务器完成查找,因此无需处理服务地点的任何更改和处理。
负载均衡的意义是什么?
在计算机中,负载均衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载均衡旨在优化资源使用,最大化吞吐量,最小化相应时间并避免任何单一的资源过载。使用多个组件进行负载均衡而不是单个组件可能会通过冗余来提高可靠性和可用性。
SpringCloud熔断机制介绍
在Spring Cloud框架里,熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用达到一定的阈值,就会启动熔断机制。熔断机制的注解是@HystrixCommand,Hystrix会找有这个注解的方法,并将这类方法关联到和熔断器连在一起的代理上。当前,@HystrixCommand仅当类的注解为@Service或@Component时才会发挥作用。
Spring Cloud对比下Dubbo,什么场景下使用Spring Cloud?
两种所解决的问题域不一样:Dubbo的定位始终是一款RPC框架,而Spring Cloud的目的是微服务架构下的一站式解决方案。
Spring Cloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式。
严格来说,这两种方式各有优劣。虽然在一定程度上来说,后者牺牲了服务调用的性能,但是也避免了上面提到的原生RPC带来的问题。而且REST相比RPC更加灵活,服务提供方和调用方的依赖只靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更加合适。