為什么越來(lái)越多的人選擇Spring Boot?
我們都知道,Spring是一個(gè)非常經(jīng)典的應(yīng)用框架,與其說是Java開發(fā)不如說是Spring開發(fā),為什么現(xiàn)在越來(lái)越多的人會(huì)選擇用Spring Boot呢?。要回答這個(gè)問題,還需要從Java Web開發(fā)的發(fā)展歷史開始說起。
1、Java Web開發(fā)簡(jiǎn)史

自1995年James Gosling(詹姆斯·高斯林)帶領(lǐng)團(tuán)隊(duì)設(shè)計(jì)發(fā)布Java語(yǔ)言以來(lái),Java一直排在編程語(yǔ)言排行榜的前列,James Gosling也被稱為“Java之父”。

在最初發(fā)布的Java版本中,包含Java SE、JavaEE、JavaME。
Java SE(Standard Edition)作為標(biāo)準(zhǔn)版本,提供最核心的基礎(chǔ)功能,Java EE(Enterprise Edition)作為企業(yè)版,主要用于企業(yè)級(jí)的Web開發(fā),JavaME(Micro Edition)作為微型版本主要應(yīng)用與移動(dòng)設(shè)備的開發(fā)。隨著Java的語(yǔ)言的廣泛應(yīng)用,Java也找到了自身的優(yōu)勢(shì),Java EE版本被應(yīng)用得最多。
從1996年開始,JavaEE開發(fā)是基于JSP + Java Bean來(lái)完成的。
后來(lái)慢慢地演變,1997年官方推出了 JSP + Servlet + Java Bean來(lái)進(jìn)行開發(fā),Servlet起到了調(diào)度控制的作用,這是MVC設(shè)計(jì)的雛形。
然后,發(fā)展出現(xiàn)了 JSP + Sevlet + Java Bean + Dao的模式,將業(yè)務(wù)邏輯處理和數(shù)據(jù)庫(kù)訪問分離,出現(xiàn)了三層架構(gòu)設(shè)計(jì)理念。
再后來(lái),1998年前后,為了滿足多服務(wù)器之間的通信,采用了JSP + Servlet + EJB的形式,出現(xiàn)了RPC設(shè)計(jì)的雛形。
之后,繼續(xù)演變,在2006年首次出現(xiàn) JSF + EJB + JPA,提出前后端完全隔離開發(fā)的思想。
當(dāng)然,這些技術(shù)都是Java官方提供的。好像,一直都不那么受歡迎。尤其是在開源社區(qū)發(fā)布一些開源的產(chǎn)品用來(lái)來(lái)代替官方退出的這些技術(shù),主要目的是為了簡(jiǎn)化開發(fā)。于是就出現(xiàn)了許多非常經(jīng)典的Java開發(fā)框架。。
2、Java Web框架創(chuàng)始人
下面,簡(jiǎn)單總結(jié)四位全球知名的Java Web開發(fā)框架創(chuàng)始人,也是JavaEE開發(fā)的改造者,

第一位是Gavin King(加文·金),Hibernate框架創(chuàng)始人,一個(gè)具有革命性意義的、全自動(dòng)化的ORM框架,于2006年發(fā)布,最初的版本是基于JPA來(lái)實(shí)現(xiàn)的。
第二位是Craig Mcclanahan(克雷格·麥克拉納漢),著名的Struts框架創(chuàng)始人,叫Craig Mcclanahan(克雷格·麥克拉納漢),比較早的程序員都用過Struts1和Struts2,感受過非常酸爽的味道。2008年發(fā)布1.0版本,在2013年6月底還爆發(fā)了一次眼中的安全漏洞,那時(shí)候開始,我開始全面棄用Struts框架。
第三位是Clinton Begin(克林頓·比格),MyBatis框架創(chuàng)始人,2010年發(fā)布,最早期的名字叫做iBatis,它是一個(gè)比Hibernate更加輕量級(jí)的,半自動(dòng)化的持久化框架。目前,絕大部分互聯(lián)網(wǎng)公司都是采用MyBatis作為持久層的框架。
第四位是Rod Johnson(羅德·約翰遜),大名鼎鼎的Spring框架創(chuàng)始人,2004年發(fā)布1.0版本,以前叫做萬(wàn)能膠,現(xiàn)在叫做全家桶,真正給程序員帶來(lái)了春天。
小伙伴們可以對(duì)比一下發(fā)際線。
3、Spring的演變
Spring是一個(gè)通用性非常強(qiáng)的框架,它提供的工具也非常全面,能滿足各個(gè)領(lǐng)域的開發(fā)需求。因此,使用Spring之前需要完成大量的個(gè)性化配置。在Spring演變過程中,一直存在一個(gè)爭(zhēng)議,是使用XML作為配置方式 還是 使用 Annotation注解作為配置方式?

Spring在開源社區(qū)不斷質(zhì)疑聲中,不斷的發(fā)展和演變,直到Spring 4.0版本發(fā)布的時(shí)候,已經(jīng)全面支持注解方式配置,沒有XML也可以進(jìn)行開發(fā)。但是,開發(fā)者們?cè)谑褂眉冏⒔忾_發(fā)以后,發(fā)現(xiàn)代碼侵入比較多,配置也稍顯麻煩,尤其是一些Maven依賴也比較繁雜,包括使用外部的Tomcat容器部署也需要不少的工作量。

于是,Pivotal團(tuán)隊(duì)從2013年開始研發(fā)設(shè)計(jì)Spring Boot,它的初衷是為了簡(jiǎn)化開發(fā),旨在解放程序員的雙手。2014年4月,發(fā)布全新開源的輕量級(jí)框架,Spring Boot1.0版本。
4、Spring Boot的核心功能

(1)可以獨(dú)立運(yùn)行Spring項(xiàng)目
Spring Boot可以以jar包的形式進(jìn)行獨(dú)立的運(yùn)行,使用:java -jar xx.jar 就可以成功的運(yùn)行項(xiàng)目,或者在應(yīng)用項(xiàng)目的主程序中運(yùn)行main函數(shù)即可;
(2)內(nèi)嵌的Servlet容器
內(nèi)嵌容器,使得我們可以執(zhí)行運(yùn)行項(xiàng)目的主程序main函數(shù),實(shí)現(xiàn)項(xiàng)目的快速運(yùn)行;主程序代碼SpringbootDemoApplication.java
(3)提供starter簡(jiǎn)化Manen依賴
Spring Boot提供了一系列的starter pom用來(lái)簡(jiǎn)化我們的Maven依賴,比如創(chuàng)建一個(gè)web項(xiàng)目,只需要添加spring-boot-starter-web即可:
(4)自動(dòng)配置Spring
Spring Boot會(huì)根據(jù)我們項(xiàng)目中類路徑的jar包/類,為jar包的類進(jìn)行自動(dòng)配置Bean,這樣一來(lái)就大大的簡(jiǎn)化了我們的配置。當(dāng)然,這只是Spring考慮到的大多數(shù)的使用場(chǎng)景,在一些特殊情況,我們還需要自定義自動(dòng)配置;
(5)無(wú)代碼生成、無(wú)XML配置
Spring Boot神奇的地方不是借助于代碼生成來(lái)實(shí)現(xiàn)的,而是通過條件注解的方式來(lái)實(shí)現(xiàn)的,這也是Spring 4.x的新特性。
5、結(jié)論

所以,Spring Boot是由Spring發(fā)展演進(jìn)而來(lái)的,是Spring進(jìn)化的結(jié)果,是對(duì)Sping的升級(jí)。















 
 
 











 
 
 
 