1、為什么人們會(huì)猶豫使用微服務(wù)?
我見(jiàn)過(guò)許多開(kāi)發(fā)者在這個(gè)問(wèn)題上摸索。畢竟,在面試微服務(wù)架構(gòu)師角色時(shí),他們會(huì)被問(wèn)到這個(gè)問(wèn)題,所以承認(rèn)它的缺點(diǎn)可能有點(diǎn)棘手。以下是一些很好的答案:
它們需要大量協(xié)作 - 微服務(wù)需要大量的合作。不同的微服務(wù)模塊,可能分散在不同的團(tuán)隊(duì),團(tuán)隊(duì)之間需要始終保持良好的同步。
他們需要建立繁重的架構(gòu) - 系統(tǒng)是分布式的,架構(gòu)涉及很多。 他們需要過(guò)多的計(jì)劃來(lái)處理操作開(kāi)銷 - 如果您計(jì)劃使用微服務(wù)架構(gòu),則需要為操作開(kāi)銷做好準(zhǔn)備。 需要熟練的專業(yè)人員,他們可以支持異構(gòu)分布的微服務(wù)。
2、Spring Cloud 是什么
1、 Spring Cloud是一系列框架的有序集合。它利用SpringBoot的開(kāi)發(fā)便利性巧妙地簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開(kāi)發(fā),如服務(wù)發(fā)現(xiàn)注冊(cè)、配置中心、智能路由、消息總線、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控等,都可以用SpringBoot的開(kāi)發(fā)風(fēng)格做到一鍵啟動(dòng)和部署。
2、 Spring Cloud并沒(méi)有重復(fù)制造輪子,它只是將各家公司開(kāi)發(fā)的比較成熟、經(jīng)得起實(shí)際考驗(yàn)的服務(wù)框架組合起來(lái),通過(guò)SpringBoot風(fēng)格進(jìn)行再封裝屏蔽掉了復(fù)雜的配置和實(shí)現(xiàn)原理,最終給開(kāi)發(fā)者留出了一套簡(jiǎn)單易懂、易部署和易維護(hù)的分布式系統(tǒng)開(kāi)發(fā)工具包。
1、 Spring的 IOC和AOP機(jī)制 ?
2、 Spring中 `@Autowired` 和 `@Resource` 注解的區(qū)別?
3、依賴注入的方式有幾種,各是什么?
4、講一下什么是 Spring ?
5、 Spring的AOP理解:
6、Spring的IOC理解
7、解釋一下 Spring bean的生命周期
8、 解釋Spring支持的幾種bean的作用域
9、 Spring基于xml注入bean的幾種方式:
10、Spring框架中都用到了哪些設(shè)計(jì)模式?
11、聊一聊Spring中@Transactional注解及其失效的六種場(chǎng)景
12、Spring AOP(思想)以及AspectJ框架(重點(diǎn))
區(qū)別就是兩者都是介詞+名詞spring短語(yǔ),具體的不同如下
at spring只用于At Spring Festival, 中文意思是在春節(jié)
At Spring Festival, we have a big family dinner.
in spring中文意思是在春天
In spring the countryside bursts into life.鄉(xiāng)村在春天生機(jī)盎然。
in spring,春季的意思。季節(jié)前是用in
spring和spring boot二者主要區(qū)別是:
1、Spring Boot提供極其快速和簡(jiǎn)化的操作,讓 Spring 開(kāi)發(fā)者快速上手。
2、Spring Boot提供了 Spring 運(yùn)行的默認(rèn)配置。
3、Spring Boot為通用 Spring項(xiàng)目提供了很多非功能性特性,例如:嵌入式 Serve、Security、統(tǒng)計(jì)、健康檢查、外部配置等等。
Spring是一個(gè)開(kāi)放源代碼的設(shè)計(jì)層面框架,他解決的是業(yè)務(wù)邏輯層和其他各層的松耦合問(wèn)題,因此它將面向接口的編程思想貫穿整個(gè)系統(tǒng)應(yīng)用。Spring是于2003 年興起的一個(gè)輕量級(jí)的Java 開(kāi)發(fā)框架,由Rod Johnson創(chuàng)建。簡(jiǎn)單來(lái)說(shuō),Spring是一個(gè)分層的JavaSE/EE full-stack(一站式) 輕量級(jí)開(kāi)源框架。它定位的領(lǐng)域是許多其他流行的framework沒(méi)有的。Spring致力于提供一種方法管理你的業(yè)務(wù)對(duì)象。
題主所謂的Spring"其他"指的是Spring Framework、Spring Data、Spring Security,Spring Cloud,Spring Cloud Data Flow....這些嗎?
只要你訪問(wèn)Spring官網(wǎng),最大最重要的一幅圖,已經(jīng)把Spring學(xué)習(xí)和使用的路線圖清晰的展示給你了。
上圖從左到右分別是:從左到右分別是Spring Boot,Spring Cloud,Spring Cloud Data Flow。Spring Cloud Data Flow其實(shí)又暗含著Spring Integration和Spring Batch兩部分。
如果把“直接學(xué)”理解成從Spring Boot學(xué)起,然后再學(xué)“spring其他”,這樣肯定沒(méi)問(wèn)題。
如果把“直接學(xué)”理解成只學(xué)Spring Boot,“spring其他”都不學(xué),這樣肯定不行。
Spring Boot是為了讓你快速搭建一個(gè)Spring的項(xiàng)目,把Spring的所有Project(也就是題主說(shuō)的其他)整合在一起。Boot就是啟動(dòng)引導(dǎo)的意思。
Spring Boot 不是Spring Framework的升級(jí)換代技術(shù),而是由于Spring下面的項(xiàng)目太多,雖然不用XML配置了,但是當(dāng)使用多個(gè)Spring項(xiàng)目的時(shí)候配置還是比較麻煩。為了快速搭建項(xiàng)目,提供更多便利的配置項(xiàng)以及更多的默認(rèn)配置(Convention over configuration),才有的Spring Boot。
理解Spring Boot和Spring的關(guān)系,看我另外一個(gè)回答:
哪些企業(yè)或項(xiàng)目在用Spring boot,或者它會(huì)在多大程度上替代Spring?如果整體看Spring體系下的Java Web技術(shù)的話,JSP、Servlet是基礎(chǔ),中間是Spring Framework為主的"其他",然后最上層是Spring Boot。就是下面這副圖:
上面這幅圖的解釋在我另一個(gè)答案里:
spring MVC過(guò)時(shí)了嗎?如果有JSP和Servlet基礎(chǔ),然后直接學(xué)Spring Boot,相當(dāng)于沒(méi)有中間層的支持。而且,用Spring開(kāi)發(fā),你不會(huì)直接去寫Servlet。如果是前后端分離,你也用不上JSP。所以"其他"還是非常重要的。
我知道,提出這個(gè)問(wèn)題以及關(guān)心這個(gè)問(wèn)題的人都是初學(xué)者,你們幻想那種既學(xué)的少又用處大的東西。Spring Boot可以幫助你們快速啟動(dòng)(Boot)一個(gè)工程,方便配置,但是后續(xù)的核心功能還是依靠“spring其他”的。
Spring與SpringMVC的區(qū)別 1、Spring 是是一個(gè)開(kāi)源框架,是為了解決企業(yè)應(yīng)用程序開(kāi)發(fā),簡(jiǎn)單來(lái)說(shuō),Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。Spring可以將簡(jiǎn)單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對(duì)象被聲明式地組合,典型地是在一個(gè)XML文件里。 Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等,將應(yīng)用邏輯的開(kāi)發(fā)留給了你。Spring使你能夠編寫更干凈、更可管理、并且更易于測(cè)試的代碼。 它們也為Spring中的各種模塊提供了基礎(chǔ)支持。Spring的兩大核心AOP與IOC,可以單獨(dú)用于任何應(yīng)用,包括與Struts等MVC框架與Hibernate等ORM框架的集成,目前很多公司所謂的輕量級(jí)開(kāi)發(fā)就是用 Spring + Struts(2)+Hibernate。 2、Spring MVC就是一個(gè)MVC框架,Spring MVC annotation式的開(kāi)發(fā)比Struts2方便,可以直接代替上面的Struts(當(dāng)然Struts的做為一個(gè)非常成熟的MVC,功能上感覺(jué)還是比Spring強(qiáng)一點(diǎn),不過(guò)Spring MVC已經(jīng)足夠用了)。 spring mvc的執(zhí)行效率比struts高,是因?yàn)閟truts的值棧影響效率Spring MVC類似于struts的一個(gè)MVC開(kāi)框架,其實(shí)都是屬于Spring ,Spring MVC需要有Spring 的架包作為支撐才能跑起來(lái)。 3、Spring是IOC和AOP的容器框架,SpringMVC是基于Spring功能之上添加的Web框架,想用SpringMVC必須先依賴Spring。 可以將SpringMVC類比于Struts。? Spring是IOC和AOP的容器框架,SpringMVC是基于Spring功能之上添加的Web框架,想用SpringMVC必須先依賴Spring。? Spring可以說(shuō)是一個(gè)管理bean的容器,也可以說(shuō)是包括很多開(kāi)源項(xiàng)目的總稱,spring mvc是其中一個(gè)開(kāi)源項(xiàng)目,所以簡(jiǎn)單走個(gè)流程的話,http請(qǐng)求一到,由容器(如:tomact)解析http搞成一個(gè)request,通過(guò)映射關(guān)系(路徑,方法,參數(shù)?。┍籹pring mvc一個(gè)分發(fā)器去找到可以處理這個(gè)請(qǐng)求的bean,那tomcat里面就由spring管理bean的一個(gè)池子(bean容器)里面找到,處理完了就把響應(yīng)返回回去。 SpringMVC是一個(gè)MVC模式的WEB開(kāi)發(fā)框架; Spring是一個(gè)通用解決方案, 最大的用處就是通過(guò)Ioc/AOP解耦, 降低軟件復(fù)雜性, 所以Spring可以結(jié)合SpringMVC等很多其他解決方案一起使用, 不僅僅只適用于WEB開(kāi)發(fā) SSH:? SSH 為 struts+spring+hibernate 的一個(gè)集成框架,是目前較流行的一種JAVA Web應(yīng)用程序開(kāi)源框架。
1、Spring:是一個(gè)生態(tài)體系(也可以說(shuō)是技術(shù)體系),是集大成者,它包含了Spring Framework、Spring Boot、Spring Cloud等(還包括Spring Cloud data flow、spring data、spring integration、spring batch、spring security、spring hateoas),是一站式的輕量級(jí)的java開(kāi)發(fā)框架,核心是控制反轉(zhuǎn)(IOC)和面向切面(AOP),針對(duì)于開(kāi)發(fā)的WEB層(springMvc)、業(yè)務(wù)層(Ioc)、持久層(jdbcTemplate)等都提供了多種配置解決方案。
2、SpringCloud:大部分的功能插件都是基于springBoot去實(shí)現(xiàn)的,springCloud關(guān)注于全局的微服務(wù)整合和管理,將多個(gè)springBoot單體微服務(wù)進(jìn)行整合以及管理; springCloud依賴于springBoot開(kāi)發(fā),而springBoot可以獨(dú)立開(kāi)發(fā)。
spring mvc的容器是ioc,而ioc是spring core的組件,所以說(shuō)spring core是spring mvc的核心容器。
spring的核心就是AOP,通過(guò)這個(gè)依賴注入把若干的功能(BEAN)組合在一起,你可以把它理解為主板,其它的BEAN都是插件。其它的spring security,cloud,MVC,JDBC等等,都是在這個(gè)基礎(chǔ)上做出來(lái)的功能。我這理解絕對(duì)原創(chuàng),20年程序員傾情奉上。