生活随笔
收集整理的這篇文章主要介紹了
Spring Boot (一)Spring Boot 概述
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Spring Boot(一)
一 、 Spring Boot 是什么?
首先Spring Boot不是一個框架,它是一種用來輕松創建具有最小或零配置的獨立應用程序的方式。這是方法用來開發基于Spring的應用,但只需非常少的配置。它提供了默認的代碼和注釋配置,快速啟動新的Spring項目而不需要太多時間。它利用現有的Spring項目以及第三方項目來開發生產就緒(投入生產)的應用程序。它提供了一組Starter Pom或gradle構建文件,可以使用它們添加所需的依賴項,并且還便于自動配置。 Spring Boot根據其類路徑上的庫自動配置所需的類。假設應用程序想要與數據庫交互,如果在類路徑上有Spring數據庫,那么它會自動建立與數據源類的連接。
二、 Spring Boot 主要目標
為所有Spring開發提供一個基本的 、 更快的 、 更廣泛的入門體驗 。 開箱即用 , 但隨著需求開始偏離默認值 , 快速啟動 。 提供大型項目(如嵌入式服務器 , 安全性 , 度量 , 運行狀況檢查 , 外部化配置)常見的一系列非功能特性 。 絕對沒有代碼生成 , 不需要xml配置 , 完全避免xml配置 為了避免定義更多的注釋配置 (它將一些現有的Spring Fraework 注釋組合合成一個簡單的單一注釋 。) 避免編寫大量的import語句 提供一些默認值 ,以便在短時間內快速啟動項目 。
三 、 新項目為什么需要Spring Boot
假設要在Spring Framework中開發一個Hello World應用程序,因為只有一個項目專用于開發Hello World功能:它就是控制器。其余的是任何使用Spring開發的Web應用程序的通用模板文件。但是如果所有Spring Web應用程序都需要它,為什么都要在每個項目中都必須提供它? 以下是新項目需要Spring Boot的理由了。 簡化基于Java的應用程序開發,單元測試和集成測試過程。 通過提供一些默認值來減少開發,單元測試和集成測試時間。 提高生產力。 當使用默認值時,Spring Boot有自己的看法。如果不指定詳細信息,它將使用其自己的默認配置。如果想要持久化,但是沒有在POM文件中指定任何東西,那么Spring Boot會將Hibernate帶有HSQLDB數據庫的配置作為JPA提供者。 為大型項目(例如嵌入式服務器,安全性,度量,健康檢查,外部化配置)提供許多非常常見的非功能特性/解決方案。
四 、 Spring Boot 核心和限制
Spring Boot不是編寫應用程序的框架,它可以幫助我們以最少的配置或零配置開發和構建,打包和部署應用程序。 它不是應用程序服務器。但是它是提供應用程序服務器功能的嵌入式servlet容器,而不是Spring Boot本身。 類似地,Spring Boot不實現任何企業Java規范,例如JPA或JMS。 例如,Spring Boot不實現JPA,但它通過為JPA實現(例如Hibernate)自動配置適當的bean來支持JPA。 最后,Spring Boot不使用任何形式的代碼生成來完成它的功能。它是利用Spring 4的條件配置功能,以及Maven和Gradle提供的傳遞依賴關系解析,以在Spring應用程序上下文中自動配置bean。 簡而言之,Spring Boot它的核心就是Spring。 未來的Spring項目不會有任何XML配置作為它的一部分,一切都將由項目Spring Boot處理。
五、 Spring Boot 的優點和缺點
優點: 使用Java或Groovy開發基于Spring的應用程序非常容易。 它減少了大量的開發時間并提高了生產力。 它避免了編寫大量的樣板代碼,注釋和XML配置。 Spring Boot應用程序與其Spring生態系統(如Spring JDBC,Spring ORM,Spring Data,Spring Security等)集成非常容易。 它遵循“自用默認配置”方法,以減少開發工作量。 它提供嵌入式HTTP服務器,如Tomcat,Jetty等,以開發和測試Web應用程序非常容易。 它提供CLI(命令行界面)工具從命令提示符,非常容易和快速地開發和測試Spring Boot(Java或Groovy)應用程序。 它提供了許多插件來開發和測試Spring啟動應用程序非常容易使用構建工具,如Maven和Gradle 它提供了許多插件,以便與嵌入式和內存數據庫工作非常容易。 限制: 將現有或傳統的Spring Framework項目轉換為Spring Boot應用程序是一個非常困難和耗時的過程。它僅適用于全新Spring項目。
六、 Spring Boot 入門
Spring Boot項目歸根只是一個常規的Spring項目,只是利用了Spring Boot啟動程序和自動配置。要創建Spring Boot應用程序的方法,Spring團隊(The Pivotal Team)提供了以下三種方法。 使用Spring Boot CLI工具 使用Spring STS IDE 使用Spring Initializr (網站 http://start.spring.io/) 可以使用Spring Boot開發兩種基于Spring的應用程序: 基于Java的應用程序 基于Groovy的應用程序 我們可以使用Spring Boot CLI或Spring STS IDE或Spring Initializr 網站來開發Spring Boot Groovy應用程序。 但是,我們可以使用Spring STS IDE或Spring Initializr網站來開發Spring Boot Java應用程序。 無論如何,Groovy也是JVM語言幾乎類似于Java語言??梢詫roovy和Java組合成一個項目。因為就像Java文件一樣,Groovy文件最終只能編譯成 .class 文件。 .groovy 和 .java 文件都轉換為 .class 文件(相同字節代碼格式)。 Spring Boot框架編程模型的靈感來自Groovy編程模型。 Spring Boot在內部使用一些基于Groovy的技術和工具來提供默認的導入和配置。 Spring Boot框架還將現有的Spring Framework注釋組合為一些簡單或單個注釋。 我們將在后面的帖子中逐個探索這些注釋,并附帶一些實時示例。 Spring Boot框架將Spring-Java應用程序編程模型徹底改變為新的編程模型。到目前為止,Spring Boot只處于初始階段,但未來肯定都使用Spring Boot。 Spring Boot CLI
它是使用Spring Boot的最簡單和最快速的方法。它是一個用于執行groovy腳本的命令行工具??梢园凑找韵虏襟E安裝此工具: 從這里下載此項目的二進制發行版。 Spring Boot CLI需要Java JDK V1.6或更高版本才能運行。 Groovy v2.1作為此分發包的一部分進行打包,因此不需要安裝(任何現有的Groovy安裝都將被忽略) 如果解壓zip文件,就會發現spring.bat將檢查所有的設置。此腳本可以在目錄/bin下找到。 下載Spring Boot CLI Zip文件到本地文件系統,并將spring-boot-cli-1.4.3.RELEASE.zip文件解壓縮到本地文件系統中,在本實例中我們解壓到 D:\software\yiibai\spring-1.4.3.RELEASE 目錄下。 右鍵“我的電腦”->”高級系統設置”->”高級”->”環境變量”->選擇”PATH”并新建并加上面的路徑D:\software\yiibai\spring-1.4.3.RELEASE\bin;。如下圖所示 - 執行以下命令驗證安裝結果 -
C:\Users\Administrator>spring --version
Spring CLI v1.4.3.RELEASE
現在Spring Boot CLI安裝過程已成功完成。在討論Spring Boot “HelloWorld”示例之前,首先要確定從命令提示符運行Groovy腳本是否正確。 Spring Boot “Spring”命令
Spring Boot CLI提供了一個“spring”命令,用來從命令提示符運行Spring Boot Groovy腳本。Spring Boot 的“spring –help”命令有很多選項,可以將此命令用于不同的目的。其中有一個重要的選項是“run”選項。
spring run
Spring Boot 的 Hello World 實例
可以用Spring Boot開發兩種基于Spring的應用程序 Groovy應用程序 Java應用程序 Grovvy程序:
在本地文件系統中創建一個“HelloWorld”文件夾,放置groovy腳本,這里放在 D:\software\yiibai\spring-1.4.3.RELEASE 目錄下。 使用以下內容開發Groovy腳本文件。
@RestController
class HelloWorld {@RequestMapping("/")String hello() {"Hello JournalDev World."}
}
將此文件命名為HelloWorld.groovy,這里的“.groovy”擴展名是必須的。 現在Spring Boot Hello World示例已準備好使用Spring MVC Rest控制器。運行和測試這個例子來了解Spring Boot框架。在本地文件系統中的“HelloWorld”文件夾中打開命令提示符。執行以下命令 -
spring run HelloWorld.groovy
當執行“spring run HelloWorld.groovy”時,它會啟動嵌入的Tomcat服務器的默認端口號:8080?,F在Spring Boot Hello World示例應用程序已啟動并正在運行。下面打開瀏覽器來測試一下。打開瀏覽器并訪問以下鏈接。訪問此URL:http://localhost:8080/
七 、 Spring Boot 安裝
在安裝之前確保 機器中已經安裝了JDK1.6 及以上版本 如果你是一個Java 新手 , 或者你只想體驗Spring Boot , 你可以首先嘗試Spring Boot CLI 可以使用與標準Java庫的方式來使用Spring Boot。只需在類路徑中包含適當的spring-boot-*.jar文件即可。 Spring Boot不需要任何特殊工具集成,因此可以使用任何IDE或文本編輯器; 并且Spring Boot應用程序沒有什么特別之處,因此您可以像任何其他Java程序一樣運行和調試。 雖然可以直接復制 Spring Boot.jar 但是還是建議使用一個依賴管理工具 maven 使用maven 安裝 Spring Boot
Spring Boot 與maven 3.2 版本及以上兼容 。 Spring引導依賴項groupId使用org.springframework.boot。 通常Maven POM文件將繼承自spring-boot-starter-parent項目,并將依賴性聲明為一個或多個“Starters”。 Spring Boot還提供了一個可選的Maven插件來創建可執行jar。 一個典型的pom.xml 文件的內容:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>myproject</artifactId><version>0.0.1-SNAPSHOT</version><!-- Inherit defaults from Spring Boot --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.4.3.RELEASE</version></parent><!-- Add typical dependencies for a web application --><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><!-- Package as an executable jar --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
spring-boot-starter-parent是使用Spring Boot的一個很好的方法,但它可能并不適合所有的時候。 有時可能需要從不同的父POM繼承,或者可能只是不喜歡默認設置。
安裝Spring Boot CLI Spring Boot CLI是一個命令行工具,如果想要使用Spring快速原型化,可以使用它。它允許運行Groovy腳本,它有一個類似Java的語法,沒有那么多的樣板代碼。 不一定需要CLI來使用Spring Boot,但它絕對是讓Spring應用程序實現的最快捷方式。 具體安裝方式 參考上文 。
八 、 Spring Boot 應用程序開發入門
在Java中開發一個簡單的“Hello World!” Web應用程序,突出一些Spring Boot的主要特性。在這里將使用Maven來構建這個項目,因為大多數IDE支持它。 開始之前,打開一個終端,檢查是否安裝了Java和Maven的有效版本。
C:\Users\Administrator>java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)C:\Users\Administrator>mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: D:\worksp\yiibai.com\apache-maven-3.3.9
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: D:\Program Files\Java\jdk1.8.0_65\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"
此示例需要在其自己的文件夾中創建。后續說明假定您已創建了一個合適的文件夾,并且它是“當前目錄”。 創建POM.XML文件 : 我們需要從創建一個Maven pom.xml文件開始。pom.xml是將用于構建項目的配置,在這個示例中,把它放在 D:\spring-boot\pom.xml 。打開您喜歡的文本編輯器并添加以下內容:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>myproject</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.4.3.RELEASE</version></parent><!-- Additional lines to be added here... --></project>
它給出了一個工作構建,可以通過運行mvn package(可以忽略“jar will be empty - no content was marked for inclusion!”現在警告)測試它。 添加類路徑依賴項
Spring Boot提供了一些“啟動器”,使得容易添加 jar 到你的類路徑。在我們的示例應用程序已經在POM的父部分中使用了spring-boot-starter-parent。spring-boot-starter-parent是一個特殊的啟動器,提供了有用的 Maven 默認值。 它還提供了一個依賴關系管理部分,以便您可以省略“blessed”依賴關系的 version 標簽。 其他“Starters”只是提供了在開發特定類型的應用程序時可能需要的依賴關系。由于我們正在開發一個web應用程序,將添加一個spring-boot-starter-web依賴關系。 可以通過 mvn dependency:tree 查看依賴樹以解決jar包沖突問題 可以看到spring-boot-starter-parent本身不提供依賴關系。現在編輯 pom.xml 文件,并在parent部分的下面添加spring-boot-starter-web依賴關系:
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
再次運行 mvn denpendency:tree 命令 , 將看到現在有許多的其他依賴項 , 包括Tomcat web服務器和Spring Boot 本身 。 編寫代碼
我們需要創建一個單一的Java文件。Maven將默認從src/main/java編譯源代碼,所以需要創建該文件夾結構,然后添加一個名為src/main/java/Example.java的文件,完整的文件路徑是 D:/spring-boot/src/main/java/Example.java,代碼如下所示:
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;@RestController
@EnableAutoConfiguration
public class Example {@RequestMapping("/")String home() {return "Hello World!"; // Copyright: w w w . y i I b A i.c O m }public static void main(String[] args) throws Exception {SpringApplication.run(Example.class, args);}}
雖然這里沒有太多的代碼,但背后有很多事情正在發生。讓我們看看代碼的重要部分。 @RestController 和 @RequestMapping注解 Example類的第一個注解是@RestController。這稱為構造型注釋,它為閱讀代碼的人提供了提示,對于Spring,該類扮演了一個特定的角色。在這種情況下,這個類是一個web @Controller,因此Spring會在處理傳入的Web請求時考慮它。 @RequestMapping注解提供了“路由”信息。它告訴Spring任何帶有路徑“/”的HTTP請求應該映射到home方法。@RestController注解告訴Spring將生成的字符串直接返回給調用者。 @RestController和@RequestMapping注解是Spring MVC注釋(它們不是Spring Boot特有的)。 @EnableAutoConfiguration注解 第二個類級別注解是@EnableAutoConfiguration。這個注解告訴Spring Boot“猜測”將如何配置Spring,它是基于添加的jar依賴。 由于spring-boot-starter-web添加了Tomcat和Spring MVC,因此自動配置將假設正在開發一個Web應用程序并相應地設置Spring。 “main”方法 應用程序的最后一部分是主(main)方法。 這只是一個遵循Java約定的應用程序入口點的標準方法。main方法通過調用run來委托Spring Boot SpringApplication類。SpringApplication將引導應用程序,啟動Spring,從而啟動自動配置Tomcat Web服務器。需要傳遞Example.class作為run方法的參數來告訴SpringApplication,這是主要的Spring組件。args數組也被傳遞以暴露任何命令行參數。 運行代碼
現在,我們的應用程序應該可以正常運行工作了。由于 POM 中使用了spring-boot-starter-parent,有一個有用的 run 目標,用它來啟動應用程序。輸入 mvn spring-boot:run 從根項目目錄啟動應用程序:
. ____ _ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/
::Spring Boot:: (v1.4.3.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)
如果打開Web瀏覽器訪問 http://localhost:8080 , 應該會看到以下輸出: 創建可執行jar
現在,我們來完成一個例子,創建一個完全自包含的可執行jar文件,可以在生產中運行??蓤绦衘ar(有時稱為“fat jar”)是包含編譯的類以及需要運行的所有jar依賴性的代碼存檔。
可執行jar和Java
Java不提供任何標準方法來加載嵌套的jar文件(即包含在jar中的jar文件)。如果想要分發一個自包含的應用程序,這可能是有問題的。
為了解決這個問題,許多開發人員使用“uber” jar。 一個uber jar簡單地將所有類,從所有jar到一個單一的歸檔。這種方法的問題是,很難看到實際上在應用程序中使用哪些庫。如果在多個jar中使用相同的文件名(但是具有不同的內容),它也可能是有問題的。
Spring Boot采用不同的方法,并允許直接嵌套JAR。
要創建可執行的jar,需要將spring-boot-maven-plugin添加到pom.xml文件中。 在dependencies部分下面插入以下行:
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>
POM 中 spring-boot-starter-parent 包括配置以綁定 repackage 目標。如果不使用父POM,則需要自己聲明此配置。有關詳細信息,請參閱插件文檔。 在 target 目錄中,應該看到一個myproject-0.0.1-SNAPSHOT.jar文件。文件大小應為10 Mb左右。如果想看里面內容,可以使用jar tvf:
【Linux環境下】jar tvf target/myproject-0.0.1-SNAPSHOT.jar
應該在target目錄中看到一個名為myproject-0.0.1-SNAPSHOT.jar.original的文件。這是Maven在Spring Boot重新打包之前創建的原始jar文件。 要運行該應用程序,請使用java -jar命令:
java -jar target/myproject-0.0.1-SNAPSHOT.jar. ____ _ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/
::Spring Boot:: (v1.4.3.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)
如果打開Web瀏覽器訪問 http://localhost:8080 , 應該會看到以下輸出: 第一個Spring Boot 引用程序開發完成 。
總結
以上是生活随笔 為你收集整理的Spring Boot (一)Spring Boot 概述 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。