问题:
简述spring、springboot和springcloud的异同
答案:
一、Spring的基础均是ioc和 aop,ioc 提供了依赖注入的容器, aop解决了面向切面编程,然后在此两者的基础上实现了其他延伸产品的高级功能。Spring主要由以下六个部分组成:
(1) Spring Core:核心容器,BeanFactory提供了组件生命周期的管理,组件的创建,装配,销毁等功能。
SpringContext:ApplicationContext,扩展核心容器,提供事件处理、国际化等功能。它提供了一些企业级服务的功能,提供了JNDI,EJB,RMI的支持。
(2) Spring AOP:提供切面支持。
(3) Spring DAO:提供事务支持,JDBC,DAO支持。
(4) Spring ORM:对流行的O/R Mapping封装或支持。
(5) Spring Web:提供Web应用上下文,对Web开发提供功能上的支持,如请求、表单、异常、URL路由、Session、模板引擎、静态Web资源等。
(6) Spring Web MVC:全功能MVC框架,作用等同于Struts。
二、Spring Boot实现了auto-configuration自动配置之神器(另外三大神器actuator监控,cli命令行接口,starter依赖),降低了项目搭建的复杂度。springboot包含下面三个注解:
- @SpringBootConfiguration:继承自Configuration,加载配置类或者配置文件;
- @ComponentScan:表示自动扫描并加载符合条件的组件;
- @EnableAutoConfiguration :自动配置,在spring框架中提供了各种以@Enable开头的注解,例如: @EnableScheduling、@EnableCaching、@EnableMBeanExport等; @EnableAutoConfiguration就是借助@Import和AutoConfigurationPackage的帮助,将所有符合自动配置条件的bean定义加载到IoC容器。
综上,springboot是对spring的优化和简化,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具,遵循约定大于配置的原则,注解多而配置少;同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box)。
三、Spring cloud是一套完整的微服务解决方案,所谓微服务是以开发一组小型服务的方式代替开发一个大的独立的应用系统,其中每个小型服务都运行在自己的进程中,并经常采用HTTP访问API这样轻量的机制来相互通信;这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。对这些微服务我们仅做最低限度的集中管理,微服务以springboot为基础,包含以下常用组件:
Spring Cloud Eureka:注册中心
Spring Cloud Ribbon:负载均衡
Spring Cloud Feign:远程调用
Spring Cloud Hystrix:断路器
Spring Cloud Config:配置中心
Spring Cloud Zuul:过滤和路由
Spring Cloud Bus:总线
Spring Cloud Gateway:网关
等
网友评论