為什么越來越多的人選擇Spring Boot?
我們都知道,Spring是一個非常經(jīng)典的應用框架,與其說是Java開發(fā)不如說是Spring開發(fā),為什么現(xiàn)在越來越多的人會選擇用Spring Boot呢?。要回答這個問題,還需要從Java Web開發(fā)的發(fā)展歷史開始說起。
1、Java Web開發(fā)簡史
自1995年James Gosling(詹姆斯·高斯林)帶領團隊設計發(fā)布Java語言以來,Java一直排在編程語言排行榜的前列,James Gosling也被稱為“Java之父”。
在最初發(fā)布的Java版本中,包含Java SE、JavaEE、JavaME。
Java SE(Standard Edition)作為標準版本,提供最核心的基礎功能,Java EE(Enterprise Edition)作為企業(yè)版,主要用于企業(yè)級的Web開發(fā),JavaME(Micro Edition)作為微型版本主要應用與移動設備的開發(fā)。隨著Java的語言的廣泛應用,Java也找到了自身的優(yōu)勢,Java EE版本被應用得最多。
從1996年開始,JavaEE開發(fā)是基于JSP + Java Bean來完成的。
后來慢慢地演變,1997年官方推出了 JSP + Servlet + Java Bean來進行開發(fā),Servlet起到了調(diào)度控制的作用,這是MVC設計的雛形。
然后,發(fā)展出現(xiàn)了 JSP + Sevlet + Java Bean + Dao的模式,將業(yè)務邏輯處理和數(shù)據(jù)庫訪問分離,出現(xiàn)了三層架構(gòu)設計理念。
再后來,1998年前后,為了滿足多服務器之間的通信,采用了JSP + Servlet + EJB的形式,出現(xiàn)了RPC設計的雛形。
之后,繼續(xù)演變,在2006年首次出現(xiàn) JSF + EJB + JPA,提出前后端完全隔離開發(fā)的思想。
當然,這些技術(shù)都是Java官方提供的。好像,一直都不那么受歡迎。尤其是在開源社區(qū)發(fā)布一些開源的產(chǎn)品用來來代替官方退出的這些技術(shù),主要目的是為了簡化開發(fā)。于是就出現(xiàn)了許多非常經(jīng)典的Java開發(fā)框架。。
2、Java Web框架創(chuàng)始人
下面,簡單總結(jié)四位全球知名的Java Web開發(fā)框架創(chuàng)始人,也是JavaEE開發(fā)的改造者,
第一位是Gavin King(加文·金),Hibernate框架創(chuàng)始人,一個具有革命性意義的、全自動化的ORM框架,于2006年發(fā)布,最初的版本是基于JPA來實現(xiàn)的。
第二位是Craig Mcclanahan(克雷格·麥克拉納漢),著名的Struts框架創(chuàng)始人,叫Craig Mcclanahan(克雷格·麥克拉納漢),比較早的程序員都用過Struts1和Struts2,感受過非常酸爽的味道。2008年發(fā)布1.0版本,在2013年6月底還爆發(fā)了一次眼中的安全漏洞,那時候開始,我開始全面棄用Struts框架。
第三位是Clinton Begin(克林頓·比格),MyBatis框架創(chuàng)始人,2010年發(fā)布,最早期的名字叫做iBatis,它是一個比Hibernate更加輕量級的,半自動化的持久化框架。目前,絕大部分互聯(lián)網(wǎng)公司都是采用MyBatis作為持久層的框架。
第四位是Rod Johnson(羅德·約翰遜),大名鼎鼎的Spring框架創(chuàng)始人,2004年發(fā)布1.0版本,以前叫做萬能膠,現(xiàn)在叫做全家桶,真正給程序員帶來了春天。
小伙伴們可以對比一下發(fā)際線。
3、Spring的演變
Spring是一個通用性非常強的框架,它提供的工具也非常全面,能滿足各個領域的開發(fā)需求。因此,使用Spring之前需要完成大量的個性化配置。在Spring演變過程中,一直存在一個爭議,是使用XML作為配置方式 還是 使用 Annotation注解作為配置方式?
Spring在開源社區(qū)不斷質(zhì)疑聲中,不斷的發(fā)展和演變,直到Spring 4.0版本發(fā)布的時候,已經(jīng)全面支持注解方式配置,沒有XML也可以進行開發(fā)。但是,開發(fā)者們在使用純注解開發(fā)以后,發(fā)現(xiàn)代碼侵入比較多,配置也稍顯麻煩,尤其是一些Maven依賴也比較繁雜,包括使用外部的Tomcat容器部署也需要不少的工作量。
于是,Pivotal團隊從2013年開始研發(fā)設計Spring Boot,它的初衷是為了簡化開發(fā),旨在解放程序員的雙手。2014年4月,發(fā)布全新開源的輕量級框架,Spring Boot1.0版本。
4、Spring Boot的核心功能
(1)可以獨立運行Spring項目
Spring Boot可以以jar包的形式進行獨立的運行,使用:java -jar xx.jar 就可以成功的運行項目,或者在應用項目的主程序中運行main函數(shù)即可;
(2)內(nèi)嵌的Servlet容器
內(nèi)嵌容器,使得我們可以執(zhí)行運行項目的主程序main函數(shù),實現(xiàn)項目的快速運行;主程序代碼SpringbootDemoApplication.java
(3)提供starter簡化Manen依賴
Spring Boot提供了一系列的starter pom用來簡化我們的Maven依賴,比如創(chuàng)建一個web項目,只需要添加spring-boot-starter-web即可:
(4)自動配置Spring
Spring Boot會根據(jù)我們項目中類路徑的jar包/類,為jar包的類進行自動配置Bean,這樣一來就大大的簡化了我們的配置。當然,這只是Spring考慮到的大多數(shù)的使用場景,在一些特殊情況,我們還需要自定義自動配置;
(5)無代碼生成、無XML配置
Spring Boot神奇的地方不是借助于代碼生成來實現(xiàn)的,而是通過條件注解的方式來實現(xiàn)的,這也是Spring 4.x的新特性。
5、結(jié)論
所以,Spring Boot是由Spring發(fā)展演進而來的,是Spring進化的結(jié)果,是對Sping的升級。