問(wèn)題:
簡(jiǎn)述spring、springboot和springcloud的異同
答案:
一、Spring的基礎(chǔ)均是ioc和 aop,ioc 提供了依賴注入的容器, aop解決了面向切面編程,然后在此兩者的基礎(chǔ)上實(shí)現(xiàn)了其他延伸產(chǎn)品的高級(jí)功能。Spring主要由以下六個(gè)部分組成:
(1) Spring Core:核心容器,BeanFactory提供了組件生命周期的管理,組件的創(chuàng)建,裝配,銷毀等功能。
SpringContext:ApplicationContext,擴(kuò)展核心容器,提供事件處理、國(guó)際化等功能。它提供了一些企業(yè)級(jí)服務(wù)的功能,提供了JNDI,EJB,RMI的支持。
(2) Spring AOP:提供切面支持。
(3) Spring DAO:提供事務(wù)支持,JDBC,DAO支持。
(4) Spring ORM:對(duì)流行的O/R Mapping封裝或支持。
(5) Spring Web:提供Web應(yīng)用上下文,對(duì)Web開(kāi)發(fā)提供功能上的支持,如請(qǐng)求、表單、異常、URL路由、Session、模板引擎、靜態(tài)Web資源等。
(6) Spring Web MVC:全功能MVC框架,作用等同于Struts。
二、Spring Boot實(shí)現(xiàn)了auto-configuration自動(dòng)配置之神器(另外三大神器actuator監(jiān)控,cli命令行接口,starter依賴),降低了項(xiàng)目搭建的復(fù)雜度。springboot包含下面三個(gè)注解:
- @SpringBootConfiguration:繼承自Configuration,加載配置類或者配置文件;
- @ComponentScan:表示自動(dòng)掃描并加載符合條件的組件;
- @EnableAutoConfiguration :自動(dòng)配置,在spring框架中提供了各種以@Enable開(kāi)頭的注解,例如: @EnableScheduling、@EnableCaching、@EnableMBeanExport等; @EnableAutoConfiguration就是借助@Import和AutoConfigurationPackage的幫助,將所有符合自動(dòng)配置條件的bean定義加載到IoC容器。
綜上,springboot是對(duì)spring的優(yōu)化和簡(jiǎn)化,它并不是用來(lái)替代Spring的解決方案,而是和Spring框架緊密結(jié)合用于提升Spring開(kāi)發(fā)者體驗(yàn)的工具,遵循約定大于配置的原則,注解多而配置少;同時(shí)它集成了大量常用的第三方庫(kù)配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),Spring Boot應(yīng)用中這些第三方庫(kù)幾乎可以零配置的開(kāi)箱即用(out-of-the-box)。
三、Spring cloud是一套完整的微服務(wù)解決方案,所謂微服務(wù)是以開(kāi)發(fā)一組小型服務(wù)的方式代替開(kāi)發(fā)一個(gè)大的獨(dú)立的應(yīng)用系統(tǒng),其中每個(gè)小型服務(wù)都運(yùn)行在自己的進(jìn)程中,并經(jīng)常采用HTTP訪問(wèn)API這樣輕量的機(jī)制來(lái)相互通信;這些微服務(wù)可以使用不同的語(yǔ)言來(lái)編寫,并且可以使用不同的數(shù)據(jù)存儲(chǔ)技術(shù)。對(duì)這些微服務(wù)我們僅做最低限度的集中管理,微服務(wù)以springboot為基礎(chǔ),包含以下常用組件:
Spring Cloud Eureka:注冊(cè)中心
Spring Cloud Ribbon:負(fù)載均衡
Spring Cloud Feign:遠(yuǎn)程調(diào)用
Spring Cloud Hystrix:斷路器
Spring Cloud Config:配置中心
Spring Cloud Zuul:過(guò)濾和路由
Spring Cloud Bus:總線
Spring Cloud Gateway:網(wǎng)關(guān)
等