Spring Boot了解
定義
Spring Boot是由Pivotal團隊提供的全新框架,其設(shè)計目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進行配置,從而使開發(fā)人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力于在蓬勃發(fā)展的快速應(yīng)用開發(fā)領(lǐng)域(rapid application development)成為領(lǐng)導(dǎo)者。
同類技術(shù)
Spring Data
Spring數(shù)據(jù)的任務(wù)是提供一種熟悉的、一致的、基于Spring的數(shù)據(jù)訪問編程模型,同時仍然保留底層數(shù)據(jù)存儲的特殊特性。它使得使用數(shù)據(jù)訪問技術(shù)、關(guān)系和非關(guān)系數(shù)據(jù)庫、地圖減少框架以及基于云的數(shù)據(jù)服務(wù)變得容易。這是一個包含許多特定數(shù)據(jù)庫的子項目的傘項目。這些項目是通過與這些令人興奮的技術(shù)背后的許多公司和開發(fā)人員一起合作開發(fā)的。
Spring AMQ
Spring AMQP項目將核心Spring概念應(yīng)用于基于AMQP的消息解決方案的開發(fā)。它提供了一個“模板”作為發(fā)送和接收消息的高級抽象。它還為消息驅(qū)動的POJOs提供了一個“偵聽器容器”的支持。這些庫促進了AMQP資源的管理,同時促進了依賴注入和聲明性配置的使用。在所有這些情況下,您將看到Spring框架中JMS支持的相似性。該項目由兩部分組成:Spring AMQP是基礎(chǔ)抽象,Spring Rabor是RabByMQ實現(xiàn)。
Spring Mobile
Spring Mobile是一個框架,它提供了檢測向Spring網(wǎng)站發(fā)出請求的設(shè)備的類型以及基于該設(shè)備提供替代視圖的能力。就像所有的彈簧項目一樣,彈簧手機的真正力量在于它能容易地擴展。
Spring for Andriod
Spring for Android是一個框架,它被設(shè)計成提供Spring系列項目的組件供Android應(yīng)用程序使用。與所有的Spring項目一樣,Android的真正強大之處在于它可以容易地擴展。
Spring Web Flow
Spring Web流建立在Spring MVC之上,并允許實現(xiàn)Web應(yīng)用程序的“流”。流程封裝了一系列步驟,引導(dǎo)用戶執(zhí)行某些業(yè)務(wù)任務(wù)。它跨越多個HTTP請求,具有狀態(tài),處理事務(wù)數(shù)據(jù),可重用,本質(zhì)上是動態(tài)的和長期的。
Spring Web Service
Spring Web服務(wù)(Spring WS)是Spring社區(qū)的一個產(chǎn)品,專注于創(chuàng)建文檔驅(qū)動的Web服務(wù)。Spring Web Services旨在促進契約優(yōu)先的SOAP服務(wù)開發(fā),允許使用操縱XML有效負載的許多方法之一創(chuàng)建靈活的Web服務(wù)。該產(chǎn)品基于Spring本身,這意味著您可以將Spring概念(如依賴項注入)用作Web服務(wù)的一個組成部分。
優(yōu)缺點
優(yōu)點:
(1) 快速構(gòu)建項目
(2) 對主流開發(fā)框架的無配置集成;
(3) 項目可獨立運行,無須外部依賴Servlet容器;
(4) 提供運行時的應(yīng)用監(jiān)控;
(5) 極大的提高了開發(fā),部署效率;
(6) 與云計算的天然集成。
缺點
1.從原來的xml配置方式轉(zhuǎn)換到JAVA配置方式變化有點大,不太適應(yīng)
2.感覺Spring Boot 比較適合做微服務(wù),不適合做比較大型的項目。
組成部分
spring-boot模塊
該模塊提供了一些特性用來支持springboot中其他模塊,這些特性包含如下。
SpringApplication類提供了靜態(tài)方法以便于寫一個獨立了spring應(yīng)用程序,該類的主要職責(zé)是create和refresh一個合適的Spring 應(yīng)用程序上下文(ApplicationContext)
給web應(yīng)用提供了一個可選的web容器(目前有Tomcat或Jetty)
一流的外部配置的支持(application.properties)
提供了便捷的應(yīng)用程序上下文(ApplicationContext)的初始化器,以便在ApplicationContext使用前對其進行用戶定制。
spring-boot-autoconfigure模塊
springboot可以依據(jù)classpath里面的依賴的內(nèi)容來自動配置bean到IOC容器,但是要開啟這個自動配置功能需要添加@EnableAutoConfiguration注解。Auto-configuration會嘗試推斷哪些beans是用戶可能會需要的。比如如果HSQLDB包在當前classpath下,并且用戶并沒有配置其他數(shù)據(jù)庫鏈接,這時候Auto-configuration功能會自動注入一個基于內(nèi)存的數(shù)據(jù)庫連接到應(yīng)用的IOC容器。
目前 auto-configuration 提供以下類型的注入:
Web (Tomcat or Jetty, Spring MVC)
JDBC (Commons DBCP, embedded databases, jdbcTemplate)
JPA with Hibernate
Spring Data JPA (automatically detecting Repository classes)
Spring Batch (including JobLauncherCommandLineRunners and database initialization)
Thymeleaf templating
Reactor asynchronous JVM programming
spring-boot-starters模塊
Starters是一組可以方便使用的依賴描述,starter里面一般只有一個POM文件,pom文件里面添加了Spring框架和一些相關(guān)的功能模塊的依賴配置,你需要使用某些功能時候在也不需要到處查找需要的功能都是那些jar包提供的并配置到POM文件了。比如如果你想要使用Spring和JPA作為數(shù)據(jù)庫存取,你需要引入spring-boot-starter-data-jpa在你的工程即可。
spring-boot-actuator模塊
SpringBoot還提供了許多附加功能,可以幫助我們在應(yīng)用程序部署到生產(chǎn)環(huán)境后對其進行監(jiān)控和管理。springboot提了http,jmx,shell等公交來管理和監(jiān)控我們的應(yīng)用程序。另外審計,監(jiān)控和性能指標的收集可以自動應(yīng)用到應(yīng)用程序上。
spring-boot-cli模塊
Spring Boot CLI是一個命令行公交用來快速搭建一個spring原型應(yīng)用,并且可以運行Groovy腳本。
spring-boot-loader模塊
Spring Boot Loader模塊允許我們使用java -jar archive.jar運行包含嵌套依賴的jar或者war文件,
Spring Boot出現(xiàn)的原因
解決問題
(1) Spring Boot使編碼變簡單
(2) Spring Boot使配置變簡單
(3) Spring Boot使部署變簡單
(4) Spring Boot使監(jiān)控變簡單
(5) Spring的不足
Spring Boot沒有出現(xiàn)之前的做法
Spring由于其繁瑣的配置,一度被人認為“配置地獄”,各種XML、Annotation配置,讓人眼花繚亂,而且如果出錯了也很難找出原因。
SpringBoot的出現(xiàn),改變了所有java開發(fā)的困境,SpringBoot最終奉行的宗旨:廢除掉所有負責(zé)的開發(fā),廢除掉所有的配置文件,讓開發(fā)變得更簡單純粹,核心“零配置”
學(xué)習(xí)方法
快速上手視頻
官方實例
寫DEMO
看開源代碼
項目實踐
與其他人分享