spring boot reference guidei 101為Java開發(fā)者準(zhǔn)備的安裝指南_第1頁
spring boot reference guidei 101為Java開發(fā)者準(zhǔn)備的安裝指南_第2頁
spring boot reference guidei 101為Java開發(fā)者準(zhǔn)備的安裝指南_第3頁
spring boot reference guidei 101為Java開發(fā)者準(zhǔn)備的安裝指南_第4頁
spring boot reference guidei 101為Java開發(fā)者準(zhǔn)備的安裝指南_第5頁
已閱讀5頁,還剩411頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

目ISpringBoot1.2.獲3.4使用Spring5了解SpringBoot6.遷移到生存環(huán)7.高II8SpringBoot介9.系統(tǒng)9.1Servlet10SpringBoot10.1.為Java開發(fā)者準(zhǔn)備10.1.1.Maven10.1.2.Gradle10.2SpringBootCLI10.2.1手動(dòng)10.2.2.使用GVM10.2.3使用OSXHomebrew進(jìn)10.2.4使用MacPorts進(jìn)10.2.5命令行10.2.6SpringCLI10.3.從SpringBoot早期版本升11開發(fā)你的第一個(gè)SpringBoot應(yīng)......11.5創(chuàng)建一個(gè)可執(zhí)行12.接下來閱讀III使用Spring13.構(gòu)建系.1.繼承starter13.1.2.使用沒有父POM的Spring13.1.3.改變Java13.1.4使用SpringBootMaven.13.4.Starter14.組織你的代14.1.使用"default"14.2.定位main應(yīng)用15.配置15.1.導(dǎo)入其他配置15.2.導(dǎo)入XML16.自動(dòng)16.1.逐步替換自動(dòng)16.2.禁用特定的自動(dòng)17.SpringBeans和依賴18使用@SpringBootApplication19.運(yùn)行應(yīng)19.1從IDE中運(yùn)19.2.作為一個(gè)打包后的應(yīng)用運(yùn)19.3.使用Maven插件運(yùn)19.4使用Gradle插件運(yùn)19.5.熱交20.打包用于生產(chǎn)的應(yīng)21.接下來閱讀IVSpringBoot22.22.1.自定義22.2.自定義22.3.流暢的構(gòu)建22.4.Application和22.5Web環(huán)22.6.命令行啟動(dòng)22.7Application23.1.配置隨機(jī)23.2.命令行屬23.3Application23.4特定的Profile使用YAML代替23.6.1加載23.6.2.在Spring環(huán)境中使用YAML屬..23.7.類23.7.1.第配23.7.2松散的綁定(Relaxed.24.24.1.添加激活的配置24.3Profile.控制臺(tái)輸25.3文件輸25.4日志25.5.自定義26開發(fā)Web應(yīng)26.1.SpringWebMVC26.1.1SpringMVC自動(dòng)6.1.4靜態(tài)26.1.526.1.6錯(cuò)誤處26.1.7.Spring26.2JAX-RS和26.3.內(nèi)嵌servlet26.3.1Servlets和6.3.3.自定義內(nèi)嵌servlet26.3.4JSP27.28.使用SQL數(shù)據(jù)28.1.配置28.1.1.對(duì)內(nèi)嵌數(shù)據(jù)庫28.1.2.連接到一個(gè)生產(chǎn)環(huán)境數(shù)據(jù)28.1.3.連接到一個(gè)JNDI數(shù)據(jù)28.3JPA和Spring28.3.1實(shí)體28.3.2SpringDataJPA28.3.3.創(chuàng)建和刪除JPA數(shù)據(jù)29.使用NoSQL技.1連接.1連接MongoDB數(shù)據(jù)29.2.3.SpringDataMongoDB.29.4.1連接29.4.2.SpringDataSolr.1連接29.5.2SpringDataElasticseach30..1.HornetQ30.1.2ActiveQ30.1.3使用JNDI30.1.4發(fā)30.1.531.發(fā)送郵32使用JTA處理分布式事32.1.使用一個(gè)Atomikos事務(wù)32.2.使用一個(gè)Bitronix事務(wù)32.3.使用一個(gè)J2EE管理的事務(wù)32.4.混合XA和non-XA的JMS連32.5.支持可替代的內(nèi)嵌事務(wù)33Spring34.基于JMX的和管35.35.1.測(cè)試作用域依35.2測(cè)試Spring應(yīng)35.3測(cè)試SpringBoot應(yīng)35.3.1.使用Spock測(cè)試SpringBoot應(yīng)35.4測(cè)試6.開發(fā)自動(dòng)36.1.理解auto-configured36.2定位auto-configuration候選.36.3.1.Class36.3.2Bean36.3.3.Property36.3.4Resource36.3.5.WebApplication36.3.6.SpEL表達(dá)37.38.接下來閱讀VSpringBoot執(zhí)行器Production-ready39開啟production-ready40.40.1.自定義40.240.3.安全與40.3.1.自動(dòng)配置的40.3.2.編寫自定義40.4.自定義應(yīng)用info40.4.1.在構(gòu)建時(shí)期自動(dòng)擴(kuò)展info40.4.2Git41.基于HTTP的和管41.1.保護(hù)41.2.自定義管理服務(wù)41.3.自定義管理服務(wù)41.4.自定義管理服務(wù)41.5.禁用HTTP41.6.HTTPHealth端點(diǎn)限42.基于JMX的和管42.1.自定義MBean42.2.禁用JMX42.3.使用Jolokia通過HTTP實(shí)現(xiàn)JMX管42.3.1.自定義42.3.2禁用43.使用 43.1.連 43.2.擴(kuò) 44.度量指標(biāo)44.1系統(tǒng)指44.2.數(shù)據(jù)源指44.3Tomcatsession指44.4.記錄自己的指44.5.添加你自己的公共指44.6指44.7Dropwizard指44.8.消息集45.46.追蹤46.1.自定義47.進(jìn)47.1擴(kuò)47.2.以編48.接下來閱讀VI.49.Cloud49.1綁定服50.51.52.App53.接下來閱讀VII.SpringBoot54安裝55使用55.1.使用CLI運(yùn)行應(yīng)55.1.1推斷"grab"依55.1.2推斷"grab"坐55.1.3默認(rèn)import語55.1.4.自動(dòng)創(chuàng)建main55.1.5自定義"grab"55.2.測(cè)試你的代55.3.多源文件應(yīng)55.4應(yīng).使用內(nèi)嵌55.7.為CLI添加擴(kuò)56.使用GroovybeansDSL開發(fā)應(yīng)57.接下來閱讀VIII.構(gòu)58SpringBootMaven58.1.包含該58.2打包可執(zhí)行jar和war59SpringBootGradle59.1.包含該59.2.不帶版本的依59.2.1.自定義59.3.默認(rèn)排除59.4打包可執(zhí)行jar和war59.5.就地(in-ce)運(yùn)行項(xiàng)59.6SpringBoot59.7.Repackage59.8.使用Gradle自定義配置進(jìn)行59.8.1配置59.9.理解Gradle60.對(duì)其他構(gòu)建系統(tǒng)內(nèi)嵌的60.3查找main60.4repackage實(shí)現(xiàn)61.接下來閱讀IX.How-to62SpringBoot應(yīng)62.1.解決自動(dòng)配置62.2.啟動(dòng)前自定義Environment或62.3.構(gòu)建ApplicationContext層次結(jié)構(gòu)(62.4.創(chuàng)建一個(gè)非web(non-web)應(yīng)63.屬性&63.1外部化SpringApplication63.2.改變應(yīng)63.3.使用'short'63.4.使用YAML63.5設(shè)置生效的Spring63.6.根據(jù)環(huán)境改變63.7.發(fā)現(xiàn)外部屬性的內(nèi)置64.內(nèi)嵌的servlet64.1為應(yīng)用添加Servlet,F(xiàn)ilter或64.2.改變HTTP64.3.使用隨機(jī)未分配的HTTP64.4.發(fā)現(xiàn)運(yùn)行時(shí)的HTTP64.5.配置64.6配置64.7啟用Tomcat的多連接器(Multiple64.8.端服務(wù)器后使用64.9.使用Jetty替代64.10配置.64.12.配置64.13.啟用Undertow的多64.14.使用64.14.1通過Maven使用64.14.2通過Gradle使用64.15使用64.15.1.通過Maven使用64.15.2通過Gradle使用64.16使用@ServerEndpoint創(chuàng)建WebSocket64.17.啟用HTTP.64.17.2使用GzipFilter開啟HTTP65.Spring65.1.編寫一個(gè)JSONREST服65.2.編寫一個(gè)XMLREST服65.3.自定義Jackson65.4自定義@ResponseBody65.5處理Multipart文件上65.6關(guān)閉SpringMVC65.7.關(guān)閉默認(rèn)的MVC65.8.自定義66.66.1.配置66.2.配置.7.2.配置兩67.3使用SpringData67.4.從Spring配置分離@Entity定.67.6.使用自定義的67.7.使用兩個(gè)67.8.使用普通的67.9使用SpringDataJPA和Mongo67.10.將SpringData倉庫為REST端68.數(shù)據(jù)庫68.1.使用JPA初始化數(shù)據(jù)68.2使用Hibernate初始化數(shù)據(jù)68.3.使用SpringJDBC初始化數(shù)據(jù)68.4.初始化SpringBatch數(shù)據(jù)68.5.使用一個(gè)高級(jí)別68.5.1.啟動(dòng)時(shí)執(zhí)行Flyway數(shù)據(jù)庫68.5.2啟動(dòng)時(shí)執(zhí)行Liquibase數(shù)據(jù)庫69.批處理應(yīng)69.1.在啟動(dòng)時(shí)執(zhí)行SpringBatch作70.執(zhí)行器70.1.改變HTTP端口或執(zhí)70.2.自定義'白標(biāo)'(whiabel,可以了解下相關(guān)理念)錯(cuò)誤頁71.71.1.關(guān)閉SpringBoot71.2改變AuthenticationManager并添加用戶賬71.3.當(dāng)前端使用服務(wù)器時(shí),啟用72.熱交72.1.重新加載靜態(tài)72.2.在不重啟容器的情況下重新加載Thymeleaf72.3.在不重啟容器的情況下重新加載Marker模72.4.在不重啟容器的情況下重新加載Groovy72.5在不重啟容器的情況下重新加載Velocity72.6.在不重啟容器的情況下重新加載Java72.6.1使用Maven配置Spring72.6.2.使用Gradle和InliJ配置Spring73.構(gòu)73.1.使用Maven自定義依賴73.2.使用Maven創(chuàng)建可執(zhí)行73.3.創(chuàng)建其他的可執(zhí)行73.4.在可執(zhí)行jar運(yùn)行時(shí)73.5.使用排除創(chuàng)建不可執(zhí)行的73.6.調(diào)試一個(gè)使用Maven啟動(dòng)的SpringBoot項(xiàng)73.7.調(diào)試一個(gè)使用Gradle啟動(dòng)的SpringBoot項(xiàng)73.8.使用Ant構(gòu)建可執(zhí)行存檔73.9.如何使用73.9.1.內(nèi)嵌Servlet73.9.2JTAAPI74.傳統(tǒng)74.1.創(chuàng)建一個(gè)可部署的war74.2.為老的servlet容器創(chuàng)建一個(gè)可部署的war74.3.將現(xiàn)有的應(yīng)用轉(zhuǎn)換為Spring74.4.部署WAR到.附錄A.常見應(yīng)附錄B.附錄B.1.附錄B.1.1Group附錄B.1.2Property附錄B.1.3.可重復(fù)的元數(shù)據(jù)節(jié)附錄B.2.使用注解處理器產(chǎn)附錄B.2.1.附錄B.2.2.附錄C.自動(dòng)配置附C.1來自spring-boot-autoconfigure模.附錄D.可執(zhí)行jar附錄D.1.內(nèi)嵌附錄D.1.1.可執(zhí)行jar文件附錄D.1.2.可執(zhí)行war文件附錄D.2SpringBoot的"JarFile"附錄D.2.1.對(duì)標(biāo)準(zhǔn)Java"JarFile"附錄D.3.啟動(dòng)可執(zhí)行附錄D.3.1Launcher附錄D.3.2.的存.附錄D.5.可執(zhí)行jar附錄D.5.1.Zip實(shí)體附錄D.5.2.系統(tǒng)附錄D.6.可替代的單一jarv.附錄E.依賴SpringBoot本節(jié)提供一個(gè)SpringBoot參考文檔的簡(jiǎn)明概述。你可以把它作為文檔其余部分的導(dǎo)航。你可以從頭到尾依次閱讀該參考指SpringBoot文 如果你想從總體上對(duì)SpringBoot或Spring,可以從這里開始!使用Spring準(zhǔn)備開始實(shí)際使用SpringBoot?我們已經(jīng)為你鋪好道路構(gòu)建系統(tǒng):Maven|Gradle|Ant|StarterSpringBoot命令行:使用了解SpringBoot需要SpringBoot特性?這是為你準(zhǔn)備的遷移到生存環(huán)當(dāng)你準(zhǔn)備將你的SpringBoot應(yīng)用推送到生產(chǎn)環(huán)境時(shí),我們?yōu)槟銣?zhǔn)備了一些你可能喜歡的技巧!高云部署:Cloud如果你想從總體上對(duì)SpringBoot或Spring,本章節(jié)就是為你準(zhǔn)備的!在這里,回答基的"what?","how?"和"why?"問題。你會(huì)發(fā)現(xiàn)一個(gè)溫雅的SpringBoot介紹及安裝指南。然后我們構(gòu)建第一個(gè)SpringBoot用,并討論一些我們需要遵循的原則開 SpringBoot介SpringBoot使開發(fā)獨(dú)立的,產(chǎn)品級(jí)別的基于Spring的應(yīng)用變得非常簡(jiǎn)單,你只需"justrun"們?yōu)镾pring平臺(tái)及第供開箱即用的設(shè)置,這樣你就可以有條不紊地開始。多數(shù)SpringBoot應(yīng)用需要很少的Spring配置。java-"你可以使用SpringBoot創(chuàng)建Javajava-"

系統(tǒng)默認(rèn)情況下,SpringBoot1.3.0.BUILD-SNAPSHOT需要Java7和Spring框架4.1.3或以上。你可以在Java6下使用SpringBoot,不過需要添加額外配置。具體參考Section73.9,“HowtouseJava6”。構(gòu)建環(huán)境明確支持的有Maven(3.2+)和注:盡管你可以在Java6或Java7環(huán)境下使用SpringBoot,通常我們建議你如果可能的話就使用Java8獲取資料請(qǐng)加乘風(fēng)老下列內(nèi)嵌容器支持開箱即用(outoftheJavaJavaJettyJavaJettyJavaUndertowJava你也可以將SpringBoot應(yīng)用部署到任何兼容Servlet3.0+SpringBootSpringBoot可以跟典型的Java開發(fā)工具一塊使用或安裝為一個(gè)命令行工具。不管怎樣,你將需要安裝JavaSDKv1.6或更高$$java-如果你是一個(gè)Java新手,或你只是想體驗(yàn)一下SpringBoot,你可能想先嘗試SpringBootCLI,否則繼續(xù)閱讀經(jīng)典地安裝指注:盡管SpringBoot兼容Java1.6,如果可能的話,你應(yīng)該考慮使用Java版本為Java開發(fā)者準(zhǔn)備的安裝指spring-boot-你可以像使用其他任何標(biāo)準(zhǔn)Java庫那樣使用SpringBoot,只需簡(jiǎn)單地在你的classpath下包含正確 spring-boot-件。SpringBoot不需要集成任何特殊的工具,所以你可以使用任何IDE或文本編輯器;SpringBoot應(yīng)盡管你可以拷貝SpringBootjars,不過,我們通常推薦你使用一個(gè)支持依賴管理的構(gòu)建工具(比如Maven或Gradle)獲取資料請(qǐng)加乘風(fēng)老brewSpringBoot兼容ApacheMaven3.2或更高版本。如果沒有安裝Maven,你可以參考指南。注:在很多操作系統(tǒng)上,你可以通過一個(gè)包管理器安裝Maven。如果你是一個(gè)OSXHomebrew用戶brew SpringBoot依賴的groupId為 。通常你的MavenPOM文件需要繼承 然后一個(gè)或多個(gè)“StarterPOMs”依賴。SpringBoot也提供了一個(gè)用于創(chuàng)建可執(zhí)行jars的Maven插件。<projectxmlns=" "xmlns:xsi=" <version>0.0.1-<!--InheritdefaultsfromSpringBoot--<artifactId>spring-boot-starter-<version>1.3.0.BUILD-<!--Addtypicaldependenciesforawebapplication--<artifactId>spring-boot-starter-<!--Packageasanexecutablejar--<artifactId>spring-boot-maven-<!--AddSpringrepositories--<!--(youdon'tneedthisifyouareusinga.RELEASEversion)--<id>spring- <id>spring- spring-boot-starter-注 spring-boot-starter-parentPOM,或者你可能只是不喜歡我們的默認(rèn)配置。查看Section13.1.2“UsingSpringBootwithouttheparentPOM”SpringBoot兼容Gradle1.12或更高版本。如果沒有安裝Gradle,你可以參 SpringBoot依賴可以使用org.springframework.bootgroup來。通常,你的項(xiàng)目將一個(gè)或多個(gè)“StarterPOMs”依賴。SpringBoot提供一個(gè)用于簡(jiǎn)化依賴 注:當(dāng)你需要構(gòu)建一個(gè)項(xiàng)目時(shí),GradleWrapper提供一個(gè)獲取Gradle的漂亮方式。它是一個(gè)伴隨你的代碼一塊提交的小和庫,用于啟動(dòng)構(gòu)建進(jìn)程。具體參考GradleWrapper。{)maven{url"maven{url}""classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.0.BUILD-}}applyplugin:applyplugin:'spring-jarbaseName='myproject'version='0.0.1-SNAPSHOT'}{)maven{url"maven{url}""SpringBootCLISpringBoot是一個(gè)命令行工具,用于使用Spring進(jìn)行快速原型搭建。它允許你運(yùn)行Groovy,這意味著你可以使用類Java你沒有必要為了使用SpringBoot而去用CLI,但它絕對(duì)是助力Spring應(yīng)手動(dòng)你可以從Spring軟件倉庫SpringCLI分發(fā)包完成后,遵循解壓后的存檔里的INSTALL.txt操作指南進(jìn)行安裝。一般而言,在.zip文件 學(xué)習(xí)java請(qǐng)加乘風(fēng)老使用GVMGVM(Groovy環(huán)境管理器)可以用來管理多種不同版本的Groovy和Java二進(jìn)制包,包括Groovy自身和SpringBootCLI??梢詮墨@取gvm,并使用以下命令安裝SpringBoot:$$gvminstall$spring--$gvmusespringboot$spring--這將會(huì)在你的gvm倉庫中安裝一個(gè)名叫dev的本地spring實(shí)例。它指向你的目標(biāo)構(gòu)建位置,所以每次你重新構(gòu)建SpringBoot,$$gvmlsAvailableSpringboot>+1.3.0.BUILD-+-local->-currentlyin使用OSXHomebrew進(jìn)如果你的環(huán)境是Mac,并使用Homebrew,想要安裝SpringBootCLI$$brewtap$brewinstall注:如果該方案不可用,可能是因?yàn)槟愕腷rew版本太老了。你只需執(zhí)brewupdate并重試如果你的環(huán)境是Mac,并使用MacPorts,想要安裝SpringBootCLI$$sudoportinstallspring-boot-學(xué)習(xí)java請(qǐng)加乘風(fēng)命令行SpringBootCLI啟動(dòng)為BASH和zshss提供完整令行實(shí)現(xiàn)。你可以在任何s 中source(名稱也是spring),或?qū)⑺诺侥銈€(gè)人或系統(tǒng)范圍的bash實(shí)現(xiàn)初始化中。在一個(gè)Debian系統(tǒng)里,系統(tǒng)范圍 位于/s-completion/bash下啟動(dòng)時(shí) $.$. $grabhelpjarruntest注:如果你使用Homebrew或MacPorts安裝SpringBootCLI,命令行實(shí)現(xiàn)會(huì)自動(dòng)到你的sSpringCLI示例快速建一個(gè)名叫 Stringhome(){ o}}然后簡(jiǎn)單地從一個(gè)s中運(yùn)行它$$springrun注:當(dāng)你首次運(yùn)行該應(yīng)用時(shí)將會(huì)花費(fèi)一點(diǎn)時(shí)間,因?yàn)樾枰蕾?。后續(xù)運(yùn)行將會(huì)快很多。oo從SpringBoot早期版本升如果你正在升級(jí)一個(gè)SpringBoot早期版本,查看下放在projectwiki上的"releasenotes"。你會(huì)發(fā)現(xiàn)每次發(fā)布的更新指南和一個(gè)"newandnoteworthy"特性列表。想要升級(jí)一個(gè)已安裝的CLI,你需要使用合適的包管理命令(例如,brewupgrade),或如果你是手動(dòng)安裝CLI,按照standardinstructions操作并記得更新你的PATH環(huán)境變量以移除任何老的 開發(fā)你的第一個(gè)SpringBoot應(yīng)讓我們使用Java開發(fā)一個(gè)簡(jiǎn)單的"oWorld!"web應(yīng)用,來強(qiáng)調(diào)下SpringBoot的一些關(guān)鍵特性。使用Maven構(gòu)建該項(xiàng)注:spring.io包含很多使用SpringBoot的""指南。如果你正在找特定問題的解決方案,可以先去那瞅瞅。$$java-javaversionJava(TM)SERuntimeEnvironment(build1.7.0_51-JavaHotSpot(TM)64-BitServerVM(build24.51-b03,mixed$$mvn-Mavenhome:/Users/user/tools/apache-maven-3.1.1Javaversion:1.7.0_51,vendor:Oracle 創(chuàng)建我們需要以創(chuàng)建一個(gè)Mavenpom.xml文件作為開始。該pom.xml是用來構(gòu)建項(xiàng)目的處方。打開你最喜歡的文本編輯器,然后<projectxmlns="""<version>0.0.1-<artifactId>spring-boot-starter-<version>1.3.0.BUILD-<!--Additionallinestobeaddedhere...--<!--(youdon'tneedthisifyouareusinga.RELEASEversion)--<id>spring- <id>spring-mvnmvn

注:目前你可以將該項(xiàng)目導(dǎo)入一個(gè)IDE(大多數(shù)現(xiàn)代的JavaIDE都包含對(duì)Maven的內(nèi)建支持)。簡(jiǎn)單起見,繼續(xù)使用添加classpath依SpringBoot提供很多"StarterPOMs",這能夠讓你輕松的將jars添加到你的classpath下。我們的示例程序已經(jīng)在POM的認(rèn)設(shè)置。同時(shí),它也提供了一個(gè)dependency-management節(jié)點(diǎn),這樣對(duì)于”blessed“依賴你可以省略version標(biāo)記。其他的”StarterPOMs“簡(jiǎn)單的提供依賴,這些依賴可能是你開發(fā)特定類型的應(yīng)用時(shí)需要的。由于正在開發(fā)一個(gè)web應(yīng)用,我將添加一個(gè)spring-boot-starter-web依賴-但在此之前,讓我們看下目前所擁有的$$mvn[INFO]com.example:myproject:jar:0.0.1-mvndependency:tree命令以樹形表示來打印你的項(xiàng)目依賴。你可以看到spring-boot-starter-parent本身并沒有提供依賴。spring-boot-starter- 依賴spring-boot-starter-<artifactId>spring-boot-starter-如果再次運(yùn)mvndependency:tree,你將看到現(xiàn)在有了一些其他依賴,包括Tomcatweb服務(wù)器和SpringBoot編寫代 為了完成應(yīng)用程序,我們需要?jiǎng)?chuàng)建一個(gè)單獨(dú)的Java文件。Maven默認(rèn)會(huì)src/main/java下的源碼,所以你需要?jiǎng)?chuàng)建那樣的文件結(jié)構(gòu),然后添加一個(gè)名為src/main/java/Example.java的文件:importimportimportorg.springframework.stereotype.*;importpublicclassExample{ Stringhome(){return o}publicstaticvoidmain(String[]args)throws{SpringApplication.run(Example.class,}}@RestController和@RequestMap注 提供建議。對(duì)于Spring,該類扮演了一個(gè)特殊角色。在本示例中,我們的類是一個(gè)web@Controller,所以當(dāng)處理進(jìn)來的 注解提供路由信息。它告訴Spring任何來自"/"路徑的HTTP請(qǐng)求都應(yīng)該home方法。@RestController注解告訴Spring以字符串的形式渲染結(jié)果,并直接返回給調(diào)用者。

和 @EnableAutoConfiguration注第二個(gè)類級(jí)別的注解是@EnableAutoConfiguration。這個(gè)注解告訴SpringBoot根據(jù)添加的jar依賴猜測(cè)你想如何配置Spring。spring-boot-starter-web添加了Tomcat和SpringMVC,所以auto-configuration將假定你正在開發(fā)一個(gè)web應(yīng)用并相應(yīng)地StarterPOMs和Auto-Configuration:設(shè)計(jì)auto-configuration的目的是更好的使用"StarterPOMs",但這兩個(gè)概念沒有直接的聯(lián)系。你可以自由地挑選starterPOMs以外的jar依賴,并且SpringBoot將仍舊盡最大努力去自動(dòng)配置你的應(yīng)用。我們的應(yīng)用程序最后部分是min方法。這只是一個(gè)標(biāo)準(zhǔn)的方法,它遵循Java對(duì)于一個(gè)應(yīng)用程序點(diǎn)的約定。我們的mi方法通過調(diào)用ru,將業(yè)務(wù)委托給了SpngBoo的Spicain類。Spiicain將引導(dǎo)我們的應(yīng)用,啟動(dòng)Spig,相應(yīng)地啟動(dòng)被自動(dòng)配置的ocatb服務(wù)器。我們需要將lss作為參數(shù)傳遞給n方法來告訴Spiicain誰是主要的Spig組件。為了任何令行參數(shù),s數(shù)組也會(huì)被傳遞過去。學(xué)習(xí)java請(qǐng)加乘風(fēng)老運(yùn)行示到此我們的應(yīng)用應(yīng)該可以工作了。由于使用了spring-boot-starter-parentPOM,這樣我們就有了一個(gè)非常有用的run目標(biāo), 下輸入mvnspring-boot:run來啟動(dòng)應(yīng)用:$$mvnspring- _/\\/'____\\\(( |'_|'_||'_\/_`|\\\\\/)||_)|||||||(_||))))'| |.|_||_|_||_\,|////=========|_|==============|::SpringBoot::(v1.3.0.BUILD- (logoutput StartedExamplein2.222seconds(JVMrunningforoo點(diǎn)ctrl-c溫雅地關(guān)閉應(yīng)創(chuàng)建一個(gè)可執(zhí)行讓我們通過創(chuàng)建一個(gè)完全自包含的可執(zhí)行j文件來結(jié)束我們的示例,該文件可以在生產(chǎn)環(huán)境運(yùn)行??蓤?zhí)行js(有時(shí)候被成為胖stjs)是包含你的編譯后的類和你的代碼運(yùn)行所需的依賴j的存檔??蓤?zhí)行和Ja:Java沒有提供任何標(biāo)準(zhǔn)的加載內(nèi)嵌j文件(即r文件中還包含文件)的方法。如果你想發(fā)布一個(gè)自包含的應(yīng)用這就是一個(gè)問題。為了解決該問題,很多開發(fā)者采用共享的js。一個(gè)共享的j簡(jiǎn)單地將來自所有s的類打包進(jìn)一個(gè)單獨(dú)的超級(jí)j。采用共享方式的問題是很難區(qū)分在你的應(yīng)用程序中可以使用哪些庫。在多個(gè)js中如果存在相同的文件名(但內(nèi)容不一樣)也會(huì)是一個(gè)問題。SpingBoo采取一個(gè)不同的途徑,并允許你真正的內(nèi)嵌s。為了創(chuàng)建可執(zhí)行的jar,需要將spring-boot-maven-plugin添加到我們的pom.xml中。在dependencies節(jié)點(diǎn)下插入以下<artifactId>spring-boot-maven-注:spring-boot-starter-parentPOM包含用于綁定repackage目標(biāo)的<executions>配置。如果你不使用parentPOM,你將 $$mvn[INFO]Scanningforprojects...[INFO][INFO]maven-jar-plugin:2.4:jar(default-jar)@myproject--[INFO]spring-boot-maven-plugin:1.3.0.BUILD-SNAPSHOT:repackage(default)@myprojectmyproject-0.0.1-如果查看 myproject-0.0.1-jar可以運(yùn)jar$$jartvftarget/myproject-0.0.1- 下,你應(yīng)該也能看到一個(gè)很小的名為myproject-0.0.1-SNAPSHOT.jar.original的文件。這是在SpringBoot重新打?yàn)榱诉\(yùn)行該應(yīng)javajar$$java-jartarget/myproject-0.0.1- _/\\/'____\\\(( |'_|'_||'_\/_`|\\\\\/\\/)||_)|||||||(_||))))'| |.|_||_|_||_\,|////=========|_|==============|::SpringBoot::(v1.3.0.BUILD-(logoutputStartedExamplein2.536seconds(JVMrunningfor 接下來閱讀使用Spring本章節(jié)將會(huì)詳細(xì)介紹如何使用SpringBoot。它覆蓋了構(gòu)建系統(tǒng),自動(dòng)配置和運(yùn)行/部署選項(xiàng)等。我們也覆蓋了一些SpringBoot最佳實(shí)踐。盡管SpringBoot沒有什么特別的(只是一個(gè)你能消費(fèi)的庫),但仍有一些建議,如果你遵循的話將會(huì)讓你的如果你剛接觸SpringBoot,那最好先讀下上一章節(jié)的GettingStarted使用Spring 構(gòu)建系選擇其他構(gòu)建系統(tǒng)來使用SpringBoot也是可能的(比如Ant),但它們不會(huì)被很好的支持。 Maven用戶可以繼承spring-boot-starter-parent項(xiàng)目來獲取合適的默認(rèn)設(shè)置。該父項(xiàng)目提供以下特默認(rèn)編譯級(jí)別為Java

spring-boot-spring-boot-合適的插件配置(exec插件,surefire,Gitcommit針對(duì)pertiesapplication.yml的資源改用 繼承starter想配置你的項(xiàng)目繼承spring-boot-starter-parent只需要簡(jiǎn)單地設(shè)置parent為<!--<!--InheritdefaultsfromSpringBoot--<artifactId>spring-boot-starter-<version>1.3.0.BUILD-注:你應(yīng)該只需要在該依賴上指定SpringBoot版本。如果導(dǎo)入其他的starters使用沒有父POM的Springspring-boot-starter-spring-boot-starter-

spring-boot-starter-spring-boot-starter-

<!--ImportdependencymanagementfromSpringBoot--<artifactId>spring-boot-<version>1.3.0.BUILD-spring-boot-starter-java.versionspring-boot-starter-java.version使用SpringBootMaven插件添加到點(diǎn)處<artifactId>spring-boot-maven-注:如果使用SpringBootstarterparentpom,你只需要添加該插件而無需配置它,除非你想改變定義在partent中的設(shè)的"超父"(superparent)。

applyapplyplugin:repositories{jcenter()}dependencies{compile("org.springframework.boot:spring-boot-starter-web:1.3.0.BUILD-}spigelin插件也是可以使用的,它提供創(chuàng)建可執(zhí)行jr和從suce運(yùn)行項(xiàng)目的任務(wù)。它也添加了一個(gè)rgy用于讓你省略常用依賴的版本號(hào):repositories{jcenter()}dependencies{classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.0.BUILD-}}applyplugin:applyplugin:'spring-repositories{jcenter()}dependencies{}使用ApacheAnt構(gòu)建一個(gè)SpringBoot項(xiàng)目是完全可能的,然而,SpringBoot沒有為它提供特殊的支持或插件。Ant可以使用Ivy依賴管理系統(tǒng)來導(dǎo)入starterPOMs。查看Section73.8,“BuildanexecutablearchivewithAnt”獲取指導(dǎo)StarterSrPMs是可以包含到應(yīng)用中的一個(gè)方便的依賴關(guān)系描述符集合。你可以獲取所有Spig及相關(guān)技術(shù)的一站式服務(wù),而不需要翻閱示例代碼,拷貝粘貼大量的依賴描述符。例如,如果你想使用Spg和JA進(jìn)行數(shù)據(jù)庫,只需要在你的項(xiàng)目中包含-trapa依賴,然后你就可以開始了。spring-boot-starter-名字有什么含義:所有的starters遵循一個(gè)相似名模式 ,在這里*是一種特殊類型的應(yīng)用程序spring-boot-starter-該命名結(jié)構(gòu)旨在幫你找到需要的starter。很多IDEs集成的Maven允許你通過名稱搜索依賴。例如,使用相應(yīng)的Eclipse或插件,你可以簡(jiǎn)單地在POM編輯器中點(diǎn)ctrl-space,然后輸入"spring-boot-starter"可以獲取一個(gè)完整列表。下面的應(yīng)用程序starters是SpringBoot在org.springframework.boot組下提供的:13.1.SpringBootapplicationSpringBootstarter,包括自動(dòng)配置支持,日志和過對(duì)面向切面編程的支持,包括spring-aop和對(duì)SpringBatch的支持,包括HSQLDB數(shù)據(jù)對(duì)SpringCloudConnectors的支持,簡(jiǎn)化在云平臺(tái)下(例如,CloudFoundry對(duì)Elasticsearch搜索和分析引擎的支持,包括spring-data-對(duì)GemFire分布式數(shù)據(jù)的支持,包括spring-data-對(duì)MongoDBNOSQL數(shù)據(jù)庫的支持,包括spring-data-對(duì)通過RESTSpringData倉庫的支持,通過spring-data-rest-webmvc實(shí)對(duì)基于HATEOAS的RESTful服務(wù)的支持,通過spring-hateoas實(shí)對(duì)普通spring-integration模塊對(duì)JerseyRESTfulWeb服務(wù)對(duì)javax.mail的支對(duì) 的支對(duì)REDIS鍵值數(shù)據(jù)的支持,包括spring- 對(duì) ,對(duì)SpringWeb服務(wù)13.2.SpringBoot生產(chǎn)準(zhǔn)備的starters添加sshs支最后,SpringBoot包含一些可用于排除或交換具體技術(shù)方面的starters。表13.3.SpringBoottechnicalstarters導(dǎo)入JettyHTTP引擎(作為Tomcat的替代導(dǎo)入SpringBoot的默認(rèn)日志系統(tǒng)導(dǎo)入SpringBoot的默認(rèn)HTTP引擎組織你的代SpringBoot不需要使用任何特殊的代碼結(jié)構(gòu),然而,這里有一些有用的最佳實(shí)使用"default"default當(dāng)類沒有包含 default為對(duì)@ComponentScan,

注:我們建議你遵循Java推薦的包命名規(guī)范,使用一個(gè)反轉(zhuǎn)的(例如ject)定位main應(yīng)用我們通常建議你將main應(yīng)用類放在位于其他類上面的根包(rootpackage)中。通常使用@EnableAutoConfiguration注解你 注解的類所在包將被用來搜索@Entity項(xiàng)使用根包允許@ComponentScan注解而不需要定義一個(gè)用@SpringBootApplication注解。

+-+-+-| +- +-|+- +-|+-+-文件將方法,還有基本的@Configurationpackagepackageimportimportorg.springframework.cont importpublicclassApplicationpublicstaticvoidmain(String[]}}配置用 類作為主要源。一般定義main方法的類也是主要@Configuration的一個(gè)很好候選注:很多使用XL配置的Spi配置示例已經(jīng)被發(fā)布到網(wǎng)絡(luò)上。你應(yīng)該總是盡可能的使用基于Java的配置。搜索查看e*注解就是一個(gè)好的開端。導(dǎo)入其他配置@Configuration放進(jìn)一個(gè)單獨(dú)的類@Import注解可以用來導(dǎo)入其他配置類。另外,你也可以使用@ComponentScan注解自動(dòng)收集所有的Spring組件,包括@Configuration類。導(dǎo)入XML配如果你絕對(duì)需要使用基于XML的配置,我們建議@Configuration類@ImportResource注自動(dòng)存 你可以通過將@EnableAutoConfiguration或@SpringBootApplication注解添加到一個(gè)@Configuration類上來選擇自動(dòng)配置

類逐步替換自動(dòng)配的DataSourcebean,默認(rèn)的內(nèi)嵌數(shù)據(jù)庫支持將不被考慮。

禁用特定的自動(dòng)配如果發(fā)現(xiàn)應(yīng)用了你不想要的特定自動(dòng)配置類,你可以使用@EnableAutoConfiguration注解的排除屬性來禁用它們importimportorg.springframework.boot.autoconfigure.*;importorg.springframework.context.annotation.*;publicclassMyConfiguration{}SpringBeans和依賴常使用 你可以添加應(yīng)用程序組件(@Component,@Service,@Repository,@Controller等)將被自 為SpringBeans

beanpackagepackageimportorg.springframework.stereotype.Service;publicclassDatabaseAccountServiceimplements{privatefinalRiskAssessorriskAssessor;publicDatabaseAccountService(RiskAssessor{this.riskAssessor=}//}許標(biāo)記為使用@SpringBootApplication很多SpringBoot開發(fā)者總@Configuration@EnableAutoConfiguration@ComponentScan注解他們的main類。由于這些注解被如此頻繁地一塊使用(特別是你遵循以上最佳實(shí)踐時(shí)),SpringBoot提供一個(gè)方便的@SpringBootApplication選擇。 注解等價(jià)于以默認(rèn)屬性使用@Configuration,@EnableAutoConfiguration和@ComponentScanpackagepackageimportimport@SpringBootApplication//sameas@Configuration@EnableAutoConfiguration@ComponentScanpublicclassApplication{publicstaticvoidmain(String[]}}運(yùn)行應(yīng)從IDE中運(yùn)系統(tǒng)有關(guān)。大多數(shù)IDEs能夠直接導(dǎo)入Maven項(xiàng)目,例如Eclipse用戶可以File菜單。

如果不能直接將項(xiàng)目導(dǎo)入DE,你可以需要使用構(gòu)建系統(tǒng)生成DE元數(shù)據(jù)。Mve有針對(duì)Ece和DEA的插件;rle為各種DEs提供插件。注:如果意外地運(yùn)行一個(gè)wb應(yīng)用兩次,你將看到一個(gè)端口已在使用中錯(cuò)誤。為了確保任何存在的實(shí)例是關(guān)閉的,STS用戶可以使用h按鈕而不是Rn按鈕。作為一個(gè)打包后的應(yīng)用運(yùn)如果使用SpringBootMaven或Gradle插件創(chuàng)建一個(gè)可執(zhí)行jarjavajar運(yùn)行你的應(yīng)$$java-jartarget/myproject-0.0.1--jartarget/myproject-0.0.1-使用Maven插件運(yùn)SpringBootMaven插件包含一個(gè)run目標(biāo),它可以用來快速編譯和運(yùn)行應(yīng)用程序。應(yīng)用程序以一種的方式運(yùn)行,由于$$mvnspring-使用Gradle插件運(yùn)SpringBootGradle插件也包含一個(gè)run目標(biāo),它可以用來以的方式運(yùn)行你的應(yīng)用程序。不管你什么時(shí)候?qū)oot-bootRun任務(wù)總是被添加進(jìn)boot-$$gradle熱交由于SpringBoot應(yīng)用程序只是普通的Java應(yīng)用,那JVM熱交換(hot-swap)應(yīng)該能出色的工作。JVM熱交換在它能替換的字節(jié)碼上有些限制,更全面的解決方案可以使用SpringLoaded項(xiàng)目或JRebel。打包用于生產(chǎn)的應(yīng)可執(zhí)行s可用于生產(chǎn)部署。由于它們是自包含的,非常適合基于云的部署。關(guān)于其他生產(chǎn)準(zhǔn)備的特性,比如健康,審計(jì)和指標(biāo)REST,或JX端點(diǎn),可以考慮添加g-ar。具體參考Pat,SpigBotAc:Proin-rys”。接下來閱讀SpringBootSpringBoot特 publicpublicstaticvoidargs){SpringApplication.run(MySpringConfiguration.class,} _/\\/'____\\\(( |'_|'_||'_\/_`|\\\\\/)||_)|||||||(_||))))'| |.|_||_|_||_\,|////=========|_|==============|::SpringBoot v1.2.2.BUILD-2013-07-312013-07-312014-03-042014-03-04INFO56603INFO56603INFO41370INFO41370main]:Startingmain]:Started自定義通過在clsspat下添加一個(gè)x或設(shè)置lcai來指定相應(yīng)的文件可以改變啟動(dòng)過程中打印的。如果這個(gè)文件有特殊的編碼,你可以使用ig設(shè)置它(默認(rèn)為TF8)。變正在使用的SpringBoot版本號(hào),例如1.2.2.BUILD-正在使用的SpringBoot被格式化后的版本號(hào)(被括號(hào)包裹且以v作為前綴)用于顯示,例自定義publicpublicstaticvoidmain(String[]}注:傳遞給SpringApplication的構(gòu)造器參數(shù)是springbeans的配置源。在大多數(shù)情況下,這些將是@Configuration類的,但它們也可能是XML配置或要掃描包的。你也可以使用perties文件來配置SpringApplication。具體參考Externalized配置。查看配置選項(xiàng)的完整列表,可參考SpringApplicationJavadoc.流暢的構(gòu)建如果你需要?jiǎng)?chuàng)建一個(gè)分層的ApplcaiCt(多個(gè)具有父子關(guān)系的上下文),或你只是喜歡使用流暢的構(gòu)建API,你可以使用Spicair。Spiicair允許你以鏈?zhǔn)椒绞秸{(diào)用多個(gè)方法,包括可以創(chuàng)建層次結(jié)構(gòu)的和chl方法。newnew注:創(chuàng)建ApplicationContext層次時(shí)有些限制,比如,Web組件(components)必須包含在子上下文(childcontext)中,且相同的Environment即用于父上下文也用于子上下文中。具體參考SpringApplicationBuilderjavadocApplication和除了常見的Spig框架,比如CRreEvet,一個(gè)Spicain也發(fā)送一些額外的應(yīng)用。一些實(shí)際上是在AppcaiC被創(chuàng)建前觸發(fā)的。 Web環(huán)一個(gè)SpiApicain將嘗試為你創(chuàng)建正確類型的ApicaiCt。在默認(rèn)情況下,使用AnoiApica或AnoiCidicaiC取決于你正在開發(fā)的是否是wb應(yīng)用。setWebEnvironment(booleanwebEnvironment)。通過調(diào)用setApplicationContextClass(…),你可以完全控制命令行啟動(dòng)CommandLineRunner接口。在所有實(shí)現(xiàn)該接口的Springbeans上將調(diào)用run(String…args)importimportorg.springframework.boot.*publicclassMyBeanimplements{publicvoidrun(String...args)//Do}}如果一些CommandLineRunnerbeans被定義必須以特定的次序調(diào)用,你可以額外實(shí)現(xiàn)org.springframework.core.Ordered接Application退此外,如果beans想在應(yīng)用結(jié)束時(shí)返回一個(gè)特定的退出碼(exitcode),可以實(shí)現(xiàn)SpigBot允許外化(ze)你的配置,這樣你能夠在不同的環(huán)境下使用相同的代碼。你可以使用ropeis文件,AL文件,環(huán)境變量和命令行參數(shù)來外化配置。使用le注解,可以直接將屬性值注入到你的s中,并通過Spi的Eviront抽象或綁定到結(jié)構(gòu)化對(duì)象來。SpringBoot使用一個(gè)非常特別的PropertySource次序來允許對(duì)值進(jìn)行合理的覆蓋,需要以下面的次序考慮來自 下面是一個(gè)具體的示例(假設(shè)你開發(fā)一個(gè)使用屬性的importimportimportpublicclass{@Value("${name}")privateString//}你可以將一個(gè)perties文件到j(luò)ar內(nèi),用來提供一個(gè)合理的默認(rèn)name屬性值。當(dāng)運(yùn)行在生產(chǎn)環(huán)境時(shí),可以在jar外提供一個(gè)perties文件來覆蓋name屬性。對(duì)于的測(cè)試,你可以使用特定令行開關(guān)啟動(dòng)(比如,java-jarapp.jar--name="Spring")。配置隨機(jī)*語法是OPENvaluemax)CLOSE,此處OPEN,CLOSE可以是任何字符,并且value,max是整數(shù)。如果提供命令行屬默認(rèn)情況下,SpiApcan將任何可選令行參數(shù)(以開頭,比如,seve900)轉(zhuǎn)化為y,并將其添加到SpigEvir中。如上所述,命令行屬性總是優(yōu)先于其他屬性源。 Application屬性文當(dāng) 如果不喜歡將cas作為配置文件名,你可以通過指定spiconie環(huán)境屬性來切換其他的名稱。你也可以使用spiconlin環(huán)境屬性來一個(gè)明確的路徑( 位置或文件路徑列表以逗號(hào)分割)。$$java-jarmyproject.jar--$java-jarmyproject.jar--如果spconin包含(相對(duì)于文件),那它們應(yīng)該以/結(jié)尾(在加載前,spicnie產(chǎn)生的名稱將被追加到后面)。不管spiconin是什么值,默認(rèn)的搜索路徑clccnilconig/總會(huì)被使用。以這種方式,你可以在cais中為應(yīng)用設(shè)置默認(rèn)值,然后在運(yùn)行的時(shí)候使用不同的文件覆蓋它,同時(shí)保留默認(rèn)配置。注:如果你使用環(huán)境變量而不是系統(tǒng)配置,大多數(shù)操作系統(tǒng)不允許以句號(hào)分割(ispara)的key名稱,但你可以使用下劃線(scors)代替(比如,使用SPRN_CF_AME代替spicnie)。如果你的應(yīng)用運(yùn)行在一個(gè)容器中,那么JD屬性( v)或sevl上下文初始化參數(shù)可以用來取代環(huán)境變量或系統(tǒng)屬性,當(dāng)然也可以使用環(huán)境變量或系統(tǒng)屬性。特定的Profile屬屬性占位當(dāng)caiis里的值被使用時(shí),它們會(huì)被存在的Evir過濾,所以你能夠先前定義的值(比如,系統(tǒng)屬性)。app.description=${}isaSpringBoot注:你也能使用相應(yīng)的技巧為存在的SpringBoot屬性創(chuàng)建'短'變量,具體參考Section63.3“Use‘shortcommandline使用YAML代替加載name:DeveloperSetupname:MyC=DeveloperSetup=MyCoolApp--使用SpringDataBinder工具綁定那樣的屬性(這是@ConfigurationProperties做的事),你需要確定目標(biāo)bean中有個(gè)publicclassConfig{privateList<String>servers=newArrayList<String>();publicList<String>getServers(){return}}YamlPropertySourceLoader類能夠用于將YAML作為一個(gè)PropertySource導(dǎo)出到SprigEnvironment。這允許你使用熟悉的Multi-profileYAML你可以在單個(gè)文件中定義多個(gè)特定配置(profile-specific)的YAML文檔,并通過一個(gè)fileskey標(biāo)示應(yīng)用的文檔。例address:--address:--address:YAMLAL文件不能通過PrySouce注解加載。所以,在這種情況下,如果需要使用PySouce注解的方式加載值,那就要使用ropeis文件。類型安全的配置屬使用l"$ry注解注入配置屬性有時(shí)可能比較笨重,特別是需要使用多個(gè)或你的數(shù)據(jù)本身有層次結(jié)構(gòu)。為了控制和校驗(yàn)?zāi)愕膽?yīng)用配置,SpingBoo提供一個(gè)允許類型s的替代方法來使用ris。publicclassConnectionSettings{privateStringprivateInetAddress//...gettersand}username:admin#additionalconfigurationaspublicclass{publicvoid{Serverserver=newServer();}}publicclassMyConfiguration{}注:使用@ConfigurationProperties能夠產(chǎn)生可被IDEs使用的元數(shù)據(jù)文件。具體參考AppendixBConfigurationmeta-data第配正如使用@Cis注解一個(gè)類,你也可以在Ben方法上使用它。當(dāng)你需要綁定屬性到不受你控制的第三方組件時(shí),這種方式非常有用。@ConfigurationProperties(prefix@ConfigurationProperties(prefix=}ponent() 松散的綁定(RelaxedSpigBoo使用一些寬松的規(guī)則用于綁定Envir屬性到@Ciiropries,所以Envronn屬性名和n屬性名不需要精確匹配。常見的示例中有用的包括虛線分割(比如,cnxh綁定到conPa)和將環(huán)境屬性轉(zhuǎn)為大寫字母(比如,PT綁定)。 publicclassConnectionSettings{privateString}說Spring會(huì)嘗試強(qiáng)制外部的應(yīng)用屬性在綁定到@ConfigurationPropertiesbeans時(shí)類型是正確的。如果需要自定義類型轉(zhuǎn)換,你可以提供一個(gè)ConversionServicebean(beanid為conversionService)或自定義屬性編輯器(通過一個(gè)CustomEditorConfigurerbean)。@ConfigurationProperties校SpringBoot將嘗試校驗(yàn)外部的配置,默認(rèn)使用JSR-303(如果在classpath路徑中)。你可以輕松的為你的@ConfigurationProperties類添加JSR-303javax.validation約束注解:publicclassConnectionSettings{privateInetAddress//...gettersand}注:spring-boot-actuator模塊包含一個(gè)所有@ConfigurationPropertiesbeans的端點(diǎn)。簡(jiǎn)單地將你的web瀏覽器指向/configprops或使用等效的JMX端點(diǎn)。具體參考Productionreadyfeatures。//}以正常的Spig方式,你可以使用一個(gè)spicive的Evir屬性來指定哪個(gè)配置生效。你可以使用平常的任何方式來指定該屬性,例如,可以將它包含到你的caiis中:添加激活的配置有時(shí),將特定的配置屬性添加到生效的配置中而不是替換它們是有用的。spilile屬性可以用來無條件的添加生效的配置。SpiApcan的點(diǎn)也提供了一個(gè)用于設(shè)置額外配置的JavaAP(比如,在那些通過spilive屬性生效的配置之上):參考seAdiilProls()方法。示例:當(dāng)一個(gè)應(yīng)用使用下面的屬性,并用--files.active=prod開關(guān)運(yùn)行,那proddb和prodmq配置也會(huì)生files:prod注:files屬性可以定義到一個(gè)YAML文檔中,用于決定什么時(shí)候該文檔被包含進(jìn)配置中。具體參考Section63.6,“Changeconfigurationdependingontheenvironment”以編程方式設(shè)置Profile特定配置文icaiis(或caiyl)和通過@Ciis的文件這兩種配置特定變種都被當(dāng)作文件來加載的,具體參考Scin23.,Proesecicropri。 monsLogging,但開放底層的日志實(shí)現(xiàn)。默認(rèn)為會(huì)JavaUtilLogging,Log4J,默認(rèn)情況下,如果你使用'StarterPOMs',那么就會(huì)使用Logback記錄日志。為了確保那些使用JavaUtilLoggingCommonsLogging,Log4J或SLF4J的依賴庫能夠正常工作,正確的Logback路由也被包含進(jìn)來。注:如果上面的列表看起來令人困惑,不要擔(dān)心,Java有很多可用的日志框架。通常,你不需要改變?nèi)罩疽蕾?,Spring日志格SpringBoot默認(rèn)的日志輸2014-03-052014-03-052014-03-052014-03-052014-03-05

INFO45469[ INFO45469[ost-startStop-1]o.a.c.c.C.[Tomcat].[localhost].[/]INFO45469[ost-startStop-1]o.s.web.context.ContextLoaderINFO45469[ost-startStop-1]o.s.b.c.e.ServletRegistrationBean

:StartingServlet:Initializing:Root: servlet:: filter:日期和時(shí)間-日志級(jí)別ERRORWARN,INFO,DEBUGTRACEProcessID線-包括在方括號(hào)中(控制臺(tái)輸出可能會(huì)被截?cái)啵?通常是源class的類名(縮寫)控制臺(tái)輸默認(rèn)的日志配置會(huì)在寫日志消息時(shí)將它們回顯到控制臺(tái)。默認(rèn),ERROR,WARN和INFO級(jí)別的消息會(huì)被記錄??梢栽?- --$$java-jarmyapp.jar--如果你的終端支持ANSI,為了增加可讀性將會(huì)使用彩色的日志輸出。你可以設(shè)spring.output.ansi.enabled為一個(gè)支持的文件輸 或logging.path屬性(例如在你的perties中)下表顯示如何組合使用logging.*Specific錄日志文件每達(dá)到10M就會(huì)被輪換(分割),和控制臺(tái)一樣,默認(rèn)記錄ERROR,WARN和INFO級(jí)別日志級(jí)過'logging.level.*=LEVEL'('LEVEL'是TRACE,DEBUGINFO,WARNERRORFATAL,OFF中的一個(gè))設(shè)置的日志級(jí)別。.hibernate:ERROR自定義日志配 (root)或通過Spring SpringBoot外部配置文件能正常工作)JDK(JavaUtil評(píng)所有支持的日志系統(tǒng)在解析它們的配置文件時(shí)都能查詢系統(tǒng)屬性。具體可以參考spigj中的默認(rèn)配置。注:在運(yùn)行可執(zhí)行的時(shí),JvaUlLoig有類加載問題,我們建議你盡可能避免使用它。SpringBoot非常適合開發(fā)web應(yīng)用程序。你可以使用內(nèi)嵌的Tomcat,Jetty或Undertow輕輕松松地創(chuàng)建一個(gè)HTTP服務(wù)器。大SpringWebMVC框SpringWebMVC框架(通常簡(jiǎn)稱為"SpringMVC")是一個(gè)富"模型,視圖,控制器"的webSpringMVC允許你創(chuàng)建特定的@Controller或@RestControllerbeans來處理傳入的HTTP請(qǐng)求。使用@RequestMap注解可以將控制器中的方法映 publicclassMyRestController publicUsergetUser(@PathVariableLonguser){//} List<Customer>getUserCustomers(@PathVariableLonguser){//} publicUserdeleteUser(@PathVariableLonguser){//}}SpringMVC自動(dòng)SpringBoot為SpringMVC提供適用于多數(shù)應(yīng)用的自動(dòng)配置功能。在Spring默認(rèn)基礎(chǔ)上,自動(dòng)如果想全面控制SpringMVC,你可以添加自己的@Configuration,并使用@EnableWebMvc對(duì)其注解。如果想保留SpringBootMVC的特性,并只是添加其他的MVC配置(器,formatters,視圖控制器等),你可以添加自己的SpringMVC使用HttpMessageConverter接口轉(zhuǎn)換HTTP請(qǐng)求和響應(yīng)。合理的缺省值被包含的恰到好處(outofthebox),例如對(duì)象可以自動(dòng)轉(zhuǎn)換為JSON(使用Jackson庫)或XML(如果JacksonXML擴(kuò)展可用則使用它,否則使用JAXB)。字符串importorg.springframework.context.annotation.*;importpublicclassMyConfigurationpublicHttpMessageConverters{HttpMessageConverter<?>additional=...HttpMessageConverter<?>another=...}}spring.mvc.message-codes-resolver.format屬性為PREFIX_ERROR_CODEPOSTFIX_ERROR_CODE(具體查DefaultMessageCodesResolver.Format枚舉值),SpringBoot會(huì)為你創(chuàng)建一個(gè)MessageCodesResolver。靜態(tài)默認(rèn)情況下,SpringBoot從classpath下一個(gè)叫/static(/public,/resources或/META-INF/resources)的文件夾或從 提供靜態(tài)內(nèi)容。這使用了SpringMVC的ResourceHttpRequestHandler,所以你可以通過添加自己的在一個(gè)單獨(dú)的wb應(yīng)用中,容器默認(rèn)的sevt是開啟的,如果Spig決定不處理某些請(qǐng)求,默認(rèn)的sevt作為一個(gè)回退(降級(jí))將從Sevlxt根加載內(nèi)容。大多數(shù)時(shí)候,這不會(huì)發(fā)生(除非你修改默認(rèn)的VC配置),因?yàn)镾pig總能夠通過sacheSevl處理請(qǐng)求。注:如果你的應(yīng)用將被打包成,那就不要使用scmiw文件夾。盡管該文件夾是一個(gè)共同的標(biāo)準(zhǔn),但它僅在打包成w的情況下起作用,并且如果產(chǎn)生一個(gè)j,多數(shù)構(gòu)建工具都會(huì)靜悄悄的忽略它。正如RESTweb服務(wù),你也可以使用SpringMVC提供動(dòng)態(tài)HTML內(nèi)容。SpringMVC支持各種各樣的模板技術(shù),包括Velocity,Marker和JSPs。很多其他的模板引擎也提供它們自己的SpringMVC集成。SpringBoot為以下的模板引擎提供自動(dòng) 注:InliJIDEA根據(jù)你運(yùn)行應(yīng)用的方式會(huì)對(duì)classpath進(jìn)行不同的整理。在IDE里通過main方法運(yùn)行你的應(yīng)用跟從Maven或Gradle或打包好的jar中運(yùn)行相比會(huì)導(dǎo)致不同的順序。這可能導(dǎo)致SpringBoot不能從classpath下成功地找到模板。如果遇到這 錯(cuò)誤處SpringBoot默認(rèn)提供一個(gè)/error映射用來以合適的方式處理所有的錯(cuò)誤,并且它在servlet容器中了一個(gè)全局的錯(cuò)誤頁面。JSON響應(yīng)。對(duì)于瀏覽器客戶端,它會(huì)產(chǎn)生一個(gè)白色樣式(whiabel)的錯(cuò)誤視圖,該視圖將以HTML格式顯示同樣如果在某些條件下需要比較多的錯(cuò)誤頁面,內(nèi)嵌的servlet容器提供了一個(gè)統(tǒng)一的JavaDSL(領(lǐng)域特定語言)來自定publicEmbeddedServletContainerCustomizercontainerCustomizer(){returnnewMyCustomizer();}//privatestaticclassMyCustomizerimplements{publicvoidcustomize(ConfigurableEmbeddedServletContainer{container.addErrorPages(newErrorPage(HttpStatus.BAD_REQUEST,}}N.B.如果你為一個(gè)路徑一個(gè)ErrorPage,最終被一個(gè)過濾器(Filter)處理(對(duì)于一些非Springweb框架,像Jersey和FilterRegistrationBeanregistration=newFilterRegistrationBean();registration.setFilter(newMyFilter());returnregistration;}Spring如果你正在開發(fā)一個(gè)使用超的RESTfulAPI,SpringBoot將為SpringHATEOAS提供自動(dòng)配置,這在多數(shù)應(yīng)用中都工良好。自動(dòng)配置替換了對(duì)使用@EnableHypermediaSupport的需求,并一定數(shù)量的beans來簡(jiǎn)化構(gòu)建基于超的應(yīng)用,spring.jackson.*屬性或一個(gè)存在的Jackson2ObjectMapperBuilderbean進(jìn)行自定義。義JAX-RS和如果喜歡JAX-RS為REST端點(diǎn)提供的編程模型,你可以使用可用的實(shí)現(xiàn)替代SpringMVC。如果在你的應(yīng)用上下文中將1.x和ApacheCeltix的Servlet或Filter為一個(gè)@Bean,那它們工作的相當(dāng)好。Jersey2.x有一些原生的Spring支持,所以我們會(huì)在SpringBoot為它提供自動(dòng)配置支持,連同一個(gè)啟動(dòng)器(starter)。想要開始使用Jersey2.x只需要加入spring-boot-starter-jersey依賴,然后你需要一個(gè)ResourceConfig類型的@Bean,用于注publicclassJerseyConfigextends{publicJerseyConfig(){}} publicclass{publicString{return }}由于Edoit是一個(gè)Spg組件(Ct),所以它的生命周期受Spig管理,并且你可以使用Auid添加依賴及使用e注入外部配置。Jesysevlt將被,并默認(rèn)映射到*。你可以將Appcaih添加到RceCg來改變?cè)撚成?。默認(rèn)情況下,Jesy將在一個(gè)SevlRsrain類型的Ban中被設(shè)置成名稱為seySevlRsrain的Sevl。通過創(chuàng)建自己的相同名稱的,你可以或覆蓋這個(gè)。你也可以通過設(shè)置er來使用一個(gè)F代替Sev(在這種情況下,被覆蓋或替換的Ben是jsyFlisrin)。該sev有@rde屬性,你可以通過er進(jìn)行設(shè)置。不管是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論