小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Spring Boot教程

 land_zhj 2016-07-12

一、導(dǎo)覽

本文主要介紹以下幾部分:
1. 什么是Spring Boot?
2. 為什么使用Spring Boot?
3. Spring Boot提供哪些功能?
4. 如何使用Spring Boot?
5. Spring Boot有哪些不足?

二、什么是Spring Boot?

Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開發(fā)過程。
該框架使用了特定的方式(繼承starter,約定優(yōu)先于配置)來進(jìn)行配置,從而使開發(fā)人員不再需要定義樣板化的配置。通過這種方式,Boot致力于在蓬勃發(fā)展的快速應(yīng)用開發(fā)領(lǐng)域(rapid application development)成為領(lǐng)導(dǎo)者。
Spring Boot并不是一個(gè)框架,從根本上將,它就是一些庫的集合,maven或者gradle項(xiàng)目導(dǎo)入相應(yīng)依賴即可使用Spring Boot,而且無需自行管理這些庫的版本。
目前最新的穩(wěn)定版本是1.3.6.RELEASE,github地址:https://github.com/spring-projects/spring-boot

三、為什么使用Spring Boot?

Spring Boot是為簡(jiǎn)化Spring項(xiàng)目配置而生,使用它使得jar依賴管理以及應(yīng)用編譯和部署更為簡(jiǎn)單。Spring Boot提供自動(dòng)化配置,使用Spring Boot,你只需編寫必要的代碼和配置必須的屬性。
使用Spring Boot,只需20行左右的代碼即可生成一個(gè)基本的Spring Web應(yīng)用,并且內(nèi)置了tomcat,構(gòu)建的fat Jar包通過Java -jar就可以直接運(yùn)行。
如下特性使得Spring Boot非常契合微服務(wù)的概念,可以結(jié)合Spring Boot與Spring Cloud和Docker技術(shù)來構(gòu)建微服務(wù)并部署到云端:

  • 一個(gè)可執(zhí)行jar即為一個(gè)獨(dú)立服務(wù)
  • 很容易加載到容器,每個(gè)服務(wù)可以在自己的容器(例如docker)中運(yùn)行
  • 通過一個(gè)腳本就可以實(shí)現(xiàn)配置與部署,很適合云端部署,并且自動(dòng)擴(kuò)展也更容易

簡(jiǎn)單而言,即Spring Boot使編碼更簡(jiǎn)單,使配置更簡(jiǎn)單,使部署更簡(jiǎn)單,使監(jiān)控更簡(jiǎn)單。

四、Spring Boot提供哪些功能?

1.無需手動(dòng)管理依賴jar包的版本

Spring boot通過spring boot starter項(xiàng)目管理其提供的所有依賴的版本,當(dāng)升級(jí)spring boot時(shí),這些依賴的版本也會(huì)隨之升級(jí)。個(gè)人無需指定版本號(hào),但是也可以自定義版本號(hào)覆蓋springboot的默認(rèn)值。每個(gè)版本的boot都有對(duì)應(yīng)的base spring version,不建議明確地指定spring版本。
例如,使用maven時(shí),只需簡(jiǎn)單的在pom中包含spring-boot-starter-web即引入了Spring MVC和tomcat的依賴。

2.自動(dòng)配置,無需xml

Spring Boot嘗試根據(jù)你添加的jar依賴自動(dòng)配置你的應(yīng)用。例如,如果HSQLDB在類路徑中,并且你沒有手動(dòng)配置任何db連接bean,則Spring Boot會(huì)自動(dòng)配置一個(gè)內(nèi)存db。
使用@EnableAutoConfiguration或者@SpringBootApplication注解,配合@Configuration注解類,即可達(dá)到自動(dòng)配置的目的。
Spring Boot的這種自動(dòng)配置是非侵入式的,你可以定義自己的配置或bean來替代自動(dòng)配置的內(nèi)容。

3.可執(zhí)行jar包

Spring Boot默認(rèn)將應(yīng)用打包成一個(gè)可執(zhí)行的jar包文件,構(gòu)建成功后使用java -jar命令即可運(yùn)行應(yīng)用。
Java并沒有提供任何標(biāo)準(zhǔn)的方式來加載jar包中內(nèi)嵌的jar包。一般開發(fā)者使用影子jar技術(shù)來解決這種問題。一個(gè)影子jar只是簡(jiǎn)單的將所有jar的類打包到一個(gè)單獨(dú)的超級(jí)jar包中。由此帶來的問題是它很難分辨在你的應(yīng)用中實(shí)際可以使用哪些庫,并且多個(gè)jar文件中的同名文件也是一個(gè)問題。
Spring Boot則另辟蹊徑,使用如下文件格式讓你能夠直接嵌套jar包:
Spring Boot可執(zhí)行jar的文件結(jié)構(gòu)
依賴需要放到放到內(nèi)部的lib文件夾下。

Spring Boot可執(zhí)行jar的原理是什么?
Spring Boot用于支持加載內(nèi)嵌jars的核心類是 org.springframework.boot.loader.jar.JarFile(繼承
自 java.util.jar.JarFile) 。它允許你從一個(gè)標(biāo)準(zhǔn)的jar文件
或內(nèi)嵌的子jar數(shù)據(jù)中加載jar內(nèi)容。當(dāng)首次加載的時(shí)候,每個(gè)JarEntry的位置被映射到一個(gè)偏移于外部jar的物理文件:
這里寫圖片描述
上面的示例展示了如何在myapp.jar的0063處找到A.class。來自于內(nèi)嵌jar的B.class實(shí)際可以在myapp.jar的3452處找到,C.class可以在3980處找到。

4.外部化配置

Spring Boot可以使用properties文件,YAML文件,環(huán)境變量,命令行參數(shù)等來外部化配置。屬性值可以使用@Value注解直接注入到bean中,并通過Spring的Environment抽象或經(jīng)過@ConfigurationProperties注解綁定到結(jié)構(gòu)化對(duì)象來訪問。
例子:
YAML配置文件內(nèi)容:
YAML文件
使用@Value注解注入單個(gè)屬性:
@Value注解
使用@ConfigurationProperties注入屬性組:
這里寫圖片描述

5.嵌入式servlet容器

Spring Boot的web模塊內(nèi)置嵌入的Tomcat, Jetty, Undertow來構(gòu)建自包含的Servlet容器。web應(yīng)用打包成可執(zhí)行jar包時(shí),相應(yīng)的servlet 容器也會(huì)被嵌入到應(yīng)用jar中。并且servlets, filters和listeners都可以通過聲明為bean來被容器注冊(cè)。servlet容器還可以通過外部化配置來相關(guān)定制屬性,如server.port, server.session.persistence等。

6.無縫集成Spring security,Spring data, Spring Message等

Spring Boot通過stater pom來導(dǎo)入這些依賴,當(dāng)發(fā)現(xiàn)相關(guān)jar在classpath中時(shí),Spring Boot將啟動(dòng)相應(yīng)的自動(dòng)配置。例如,如果security的jar在classpath中,Spring Boot的web應(yīng)用將自動(dòng)啟動(dòng)安全限制,并且默認(rèn)啟動(dòng)basic認(rèn)證。

7.devtools提供的開發(fā)時(shí)特性

Spring Boot的devtools模塊可以為應(yīng)用增加開發(fā)時(shí)(development time)特性,例如開發(fā)環(huán)境屬性默認(rèn)值,自動(dòng)重啟,LiveReload(在自愿發(fā)生變化時(shí)觸發(fā)瀏覽器刷新),全局設(shè)置等。

8.Actuator提供的生產(chǎn)特性(health,metrics等)

Actuator是個(gè)機(jī)器術(shù)語,目前沒有統(tǒng)一的翻譯,可以直譯為促動(dòng)器或執(zhí)行器,Actuator通過微小的改變就可以產(chǎn)生很大的移動(dòng)。
Spring Boot Actuator為你的應(yīng)用提供一些生產(chǎn)環(huán)境必需的特性,如審計(jì)(audit),健康(health)和數(shù)據(jù)采集(metrics)等。使你可以在部署應(yīng)用到生產(chǎn)環(huán)境后,通過HTTP(需要SpringMVC),JMX甚至remote shell(SSH, Telnet)等來管理和監(jiān)視應(yīng)用。例如,HTTP環(huán)境下,訪問 contextUrl/health 路徑即可查詢當(dāng)前環(huán)境的磁盤空間,應(yīng)用和數(shù)據(jù)庫的狀態(tài)等;訪問contextUrl/metrics路徑即可查詢當(dāng)前jvm的內(nèi)存使用情況,線程池的狀態(tài)等。

五、如何使用Spring Boot?

1. 系統(tǒng)要求

默認(rèn)情況下,Spring Boot 1.3.6.RELEASE 需要Java7和Spring框架4.2.7.RELEASE或以上。你可以在Java6下使用Spring Boot,不過需要添加額外配置。明確支持的構(gòu)建工具是Maven(3.2+)和Gradle(1.12+)。
注:盡管你可以在Java6或Java7環(huán)境下使用Spring Boot,通常我們建議你如果可能的話就使用Java8。

2. 內(nèi)嵌Servlet容器要求

下列內(nèi)嵌容器在滿足對(duì)應(yīng)的Servlet和JDK版本要求時(shí),支持開箱即用(out of the box):

名稱 Servlet版本 Java版本
Tomcat 8 3.1 Java7+
Tomcat 7 3.0 Java6+
Jetty 9 3.1 Java7+
Jetty 8 3.0 Java6+
Undertow 1.1 3.1 Java7+

※ Undertow 是一個(gè)采用 Java 開發(fā)的靈活的高性能 Web 服務(wù)器,提供包括阻塞和基于 NIO 的非堵塞機(jī)制。Undertow 是紅帽公司的開源產(chǎn)品,是 Wildfly 默認(rèn)的 Web 服務(wù)器。

你也可以將Spring Boot應(yīng)用部署到任何兼容Servlet 3.0+的容器。

3. 使用Spring Boot

3.1 直接在Spring Boot CLI上運(yùn)行,或者在http://start./上構(gòu)建。

3.2 Eclipse上使用Spring IDE插件提供的 New -> Spring Stater Project菜單。

此方法和3.1中的start.是一樣的。

3.3 Maven的pom直接繼承spring-boot-starter-parent。

Spring Boot依賴的groupId為 org.springframework.boot 。通常你的Maven POM文件需要繼承 spring-boot-starter-parent ,然后聲明一個(gè)或多個(gè)“Starter POMs”依賴。
典型的spring boot項(xiàng)目的pom文件結(jié)構(gòu)如下所述:
Spring Boot Pom文件

3.4 不使用繼承,使用import

Scope=import可以使你無需繼承spring-boot-starter-parent,而又保留spring-boot-starter-parent提供的依賴管理(插件管理除外):
import Spring Boot

※ 除了3.4以外,3.1到3.3最終形成的pom文件和項(xiàng)目結(jié)構(gòu)是一樣的。

六、Spring Boot有哪些不足?

Spring Boot不足
如圖所示,Spring Boot沒有提供相應(yīng)的服務(wù)發(fā)現(xiàn)和注冊(cè)的配套功能(例如需要借助Spring Cloud和Netflix的Eureka),自身的Actuator所提供的監(jiān)控功能,也需要與現(xiàn)有的監(jiān)控對(duì)接。沒有配套的安全管控方案,對(duì)于REST的落地,還需要自行結(jié)合實(shí)際進(jìn)行URI的規(guī)范化工作。
可見Spring Boot作為一個(gè)微框架,離微服務(wù)的實(shí)現(xiàn)還是有些距離的。

七、參考鏈接:

http://www./cn/articles/microframeworks1-spring-boot?utm_source=infoq_en&utm_medium=link_on_en_item&utm_campaign=item_in_other_langs
http://docs./spring-boot/docs/current/reference/htmlsingle/
http://www.csdn.net/article/a/2016-05-12/15838098

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多