1序
伴隨著springmvc的使用爽蝴,對復雜的部署流程、各種服務的集成蝎亚、服務之間的影響发框、配置文件的編寫都是耗時耗力的體力活躺彬,因此spring開源組織誕生了springboot。
本文主要講述spring boot的由來梅惯,即其它誕生的背景顾患,初衷,現(xiàn)狀个唧,及對未來的展望设预。
2背景
在很早的年代徙歼,J2EE還是java企業(yè)級應用的王者規(guī)范,EJB風行其道。后來有一個叫Rod Johnson的音樂學博士魄梯,寫了本《Expert One on one J2EE
without EJB》,發(fā)明了spring酿秸,創(chuàng)辦了interface21公司灭翔,給Java的企業(yè)級開發(fā)帶來了一陣春風。之后Spring勢如破竹辣苏,跟隨著互聯(lián)網(wǎng)的興起肝箱,占據(jù)著Java領域輕量級開發(fā)的王者地位。隨著Java語言的發(fā)展稀蟋,Spring也跟著推陳出新,比如Spring3支持了Java注解形式的配置退客,Spring4支持了java8,同時也推出了springboot档玻。
3初衷
推出springboot的初衷就是為了簡化spring的配置,使得開發(fā)中集成新功能時更快误趴,簡化或減少相關的配置冤留。
4理念
springboot的理念是“習慣由于配置”树灶,因為一般搭建springmvc的人都是各種各樣的搬運服務搭建纤怒,時間長還繁瑣天通,springboot提供了統(tǒng)一且默認的配置像寒,讓用戶再無特別需求的情況下烘豹,默認配置都滿足了開發(fā)需求,即默認配置都是大家開發(fā)中習慣的配置诺祸。
5現(xiàn)狀
目前springboot最新的是1.4.0-SNAPSHOT版本携悯。主要有如下功能:
版本統(tǒng)一化、方便快速升級
目前springboot內(nèi)部自帶了一套IOPLATFORM機制筷笨,可以實現(xiàn)jar包版本的統(tǒng)一化和今后的快速升級憔鬼。
某項目中編寫的pom
父節(jié)點中使用的POM
大家可以發(fā)現(xiàn)版本控制都放在了springboot內(nèi)置的父pom中進行管理了龟劲,引用的子項目無需關心每一種服務jar包的版本號和jar包之間的兼容性,把精力集中放在業(yè)務coding上轴或。
自動配置(auto-configuration)
一項簡化配置的功能昌跌,比如在classpath中發(fā)現(xiàn)有spring security的jar包,則自動創(chuàng)建相關的bean等照雁。
零配置
spring4.x出現(xiàn)之后提倡使用java配置和注解配置組合蚕愤,而springboot不需要任何xml配置即可實現(xiàn)spring的所有配置,所有的注入都依賴與條件注解的原理進行注入饺蚊,這是spring4.x出現(xiàn)之后的新特性萍诱。
starters(簡化依賴)
這個比較關鍵,方便spring去集成各類組件卸勺,比如redis砂沛、mongodb等等。
core(security曙求、aop)
web(web碍庵、websocket、ws悟狱、vaadin静浴、rest、mobile)
template(freemarker挤渐、velocity苹享、groovy templates、thymeleaf)
webserver(tomcat浴麻、jetty得问、undertow),內(nèi)嵌servlet容器软免,獨立運行
restful框架(jersey)
data數(shù)據(jù)源異構(jdbc宫纬、jpa、mongodb膏萧、redis漓骚、gemfire携兵、solr延赌、elasticsearch、h2库倘、hsqldb曹锨、mysql孤个、postgresql)
social(facebook、linkedin沛简、twitter)
io(batch齐鲤、integration硅急、jms、amqp)
ops(actuator佳遂、remote shell)
CLI(command-line
interface),支持groovy開發(fā)
Actuator(對應用系統(tǒng)本身的自省功能)
這個有點devops的味道,使得應用程序本身可以做到自省撒顿,比如查看系統(tǒng)運行了多少線程丑罪,gc的情況,運行的基本參數(shù)等等凤壁。
樣例:
這是目前從資金通道平臺線上獲取的即時的具體指標監(jiān)控吩屹,如下圖
經(jīng)過在線json視圖查看器格式化之后,展示的各項指標參數(shù)拧抖,清晰的了解線上系統(tǒng)的內(nèi)存煤搜、CPU等各項指標情況,如下圖:
完善的社區(qū)唧席,快速發(fā)展擦盾、快速集成
6優(yōu)缺點
優(yōu)點:
1、快速構建項目
2淌哟、對主流開發(fā)框架的無配置集成
3迹卢、項目可獨立運行,無需依賴外部的servlet容器
4徒仓、提供運行時的監(jiān)控
5腐碱、極大地提高了開發(fā)、部署效率
6掉弛、與云計算的天然集成
缺點:
1:官方還不支持mybatis症见,只支持原生的JDBC、HIBERNATE,但mybatis自己開發(fā)了集成殃饿,不好統(tǒng)一升級谋作,暫時放棄。
2:版本包支持的jar還有很多不足壁晒,項目有特殊情況的還需要特別引包或者自定義starter服務瓷们。
3、學習資料較少且不夠深入秒咐,建議看官方文檔的更新谬晕,因為boot正在快速發(fā)展。
7展望
隨著devops的興起携取,以及docker技術的普及攒钳,微服務在一定場合會越來越受歡迎。即使不說微服務雷滋,springboot這種可以直接內(nèi)嵌web服務器打成一個jar包的東東不撑,也更符合devops的趨勢:打成個jar包文兢,往服務器上一扔,十分方便焕檬,外帶自身帶的actuator姆坚,把監(jiān)控也給省了一大半,真正做到了可以把精力花在刀刃上实愚。