摘要:觸發(fā)器文件可以手動(dòng)更新,也可以使用插件進(jìn)行更新。例如,要配置重新啟動(dòng)以始終使用觸發(fā)器文件,你需要添加以下屬性遠(yuǎn)程應(yīng)用程序開(kāi)發(fā)工具并不局限于本地開(kāi)發(fā),在遠(yuǎn)程運(yùn)行應(yīng)用程序時(shí),還可以使用幾個(gè)特性。
20. 開(kāi)發(fā)者工具
Spring Boot包括一組額外的工具,這些工具可以使應(yīng)用程序開(kāi)發(fā)體驗(yàn)變得更加愉快,spring-boot-devtools模塊可以包含在任何項(xiàng)目中,以提供額外的development-time特性,要包含devtools支持,請(qǐng)將模塊依賴項(xiàng)添加到你的構(gòu)建中,如下所示的Maven和Gradle列表:
Maven.
org.springframework.boot spring-boot-devtools true
Gradle.
dependencies { compile("org.springframework.boot:spring-boot-devtools") }
在運(yùn)行完全打包的應(yīng)用程序時(shí),開(kāi)發(fā)工具會(huì)自動(dòng)被禁用,如果你的應(yīng)用程序是從java -jar啟動(dòng)的,或者是從一個(gè)特殊的類(lèi)加載器開(kāi)始的,那么它就被認(rèn)為是一個(gè)“生產(chǎn)應(yīng)用程序”。將依賴項(xiàng)標(biāo)記為Maven中的可選項(xiàng)或使用compileOnly在Gradle中是一種最佳實(shí)踐,它可以防止devtools被傳遞到其他使用你的項(xiàng)目的模塊中。
默認(rèn)情況下,重新打包的存檔不包含devtools,如果你想要使用某些遠(yuǎn)程devtools特性,你需要禁用該excludeDevtools構(gòu)建屬性來(lái)包含它,該屬性同時(shí)支持Maven和Gradle插件。20.1 屬性默認(rèn)值
Spring Boot所支持的幾個(gè)庫(kù)都使用緩存來(lái)提高性能。例如,模板引擎緩存已編譯的模板以避免重復(fù)解析模板文件。另外,Spring MVC可以在提供靜態(tài)資源時(shí)向響應(yīng)添加HTTP緩存標(biāo)頭。
雖然緩存在生產(chǎn)中非常有益,但在開(kāi)發(fā)過(guò)程中可能會(huì)產(chǎn)生相反的效果,使你無(wú)法看到你在應(yīng)用程序中所做的更改。出于這個(gè)原因,spring-boot-devtools在默認(rèn)情況下禁用了緩存選項(xiàng)。
緩存選項(xiàng)通常由application.properties文件中的設(shè)置配置,例如,Thymeleaf提供了spring.thymeleaf.cache屬性,spring-boot-devtools模塊不需要手動(dòng)設(shè)置這些屬性,而是自動(dòng)應(yīng)用合理的development-time配置。
有關(guān)devtools應(yīng)用的屬性的完整列表,請(qǐng)參見(jiàn)DevToolsPropertyDefaultsPostProcessor。20.2 自動(dòng)重啟
當(dāng)類(lèi)路徑上的文件發(fā)生更改時(shí),使用spring-boot-devtools的應(yīng)用程序?qū)⒆詣?dòng)重新啟動(dòng),當(dāng)在IDE中工作時(shí),這可能是一個(gè)有用的特性,因?yàn)樗鼮榇a更改提供了非??焖俚姆答佈h(huán)。默認(rèn)情況下,類(lèi)路徑中指向文件夾的任何條目都會(huì)被監(jiān)控是否有更改,請(qǐng)注意,某些資源(如靜態(tài)資產(chǎn)和視圖模板)不需要重新啟動(dòng)應(yīng)用程序。
引發(fā)重啟當(dāng)DevTools監(jiān)視類(lèi)路徑資源時(shí),觸發(fā)重啟的惟一方法是更新類(lèi)路徑,導(dǎo)致類(lèi)路徑更新的方式取決于你使用的IDE。在Eclipse中,保存修改后的文件會(huì)導(dǎo)致類(lèi)路徑被更新并觸發(fā)重新啟動(dòng),在IntelliJ IDEA中,構(gòu)建項(xiàng)目(Build -> Build Project)具有相同的效果。
只要啟用了forking,你就可以使用支持的構(gòu)建插件(Maven和Gradle)來(lái)啟動(dòng)應(yīng)用程序,因?yàn)镈evTools需要一個(gè)獨(dú)立的應(yīng)用程序類(lèi)加載器才能正常運(yùn)行。默認(rèn)情況下,Gradle和Maven在類(lèi)路徑上檢測(cè)DevTools時(shí)是這樣做的。
當(dāng)與LiveReload一起使用時(shí),自動(dòng)重啟非常有效。詳情請(qǐng)參閱LiveReload部分。如果你使用JRebel,自動(dòng)重新啟動(dòng)將被禁用,以支持動(dòng)態(tài)類(lèi)重載。其他devtools特性(如LiveReload和property overrides)仍然可以使用。
在重新啟動(dòng)時(shí),DevTools依賴于應(yīng)用程序上下文的shutdown hook關(guān)閉它,如果你已經(jīng)禁用了shutdown hook(SpringApplication.setRegisterShutdownHook(false)),那么它將無(wú)法正常工作。
當(dāng)決定是否在類(lèi)路徑上的條目發(fā)生更改時(shí)觸發(fā)重啟時(shí),DevTools自動(dòng)忽略了名為spring-boot、spring-boot-DevTools、spring-boot-autoconfigure、spring-boot-actuator和spring-boot-starter的項(xiàng)目。
DevTools需要定制被ApplicationContext使用的ResourceLoader,如果你的應(yīng)用程序已經(jīng)提供了一個(gè),它將被包裝,不支持在ApplicationContext上直接覆蓋getResource方法。
重啟和重新加載20.2.1 日志記錄條件評(píng)估中的改變Spring Boot提供的重啟技術(shù)使用兩個(gè)類(lèi)加載器。不改變的類(lèi)(例如,來(lái)自第三方j(luò)ar的類(lèi))被加載到一個(gè)基類(lèi)加載器中,正在積極開(kāi)發(fā)的類(lèi)被加載到重啟類(lèi)加載器中,當(dāng)應(yīng)用程序重新啟動(dòng)時(shí),重啟類(lèi)加載器將被丟棄,并創(chuàng)建一個(gè)新的類(lèi)加載器。這種方法意味著應(yīng)用程序重新啟動(dòng)通常要比“冷啟動(dòng)”快得多,因?yàn)榛?lèi)加載器已經(jīng)可用并填充了。
如果發(fā)現(xiàn)重新啟動(dòng)對(duì)應(yīng)用程序來(lái)說(shuō)不夠快,或者遇到了類(lèi)加載問(wèn)題,你可以考慮重新加載技術(shù),如零周轉(zhuǎn)期的JRebel,這些工作通過(guò)在加載類(lèi)時(shí)重寫(xiě)類(lèi),使它們更易于重新加載。
默認(rèn)情況下,每次應(yīng)用程序重新啟動(dòng)時(shí),都會(huì)記錄顯示狀態(tài)評(píng)估增量的報(bào)告。報(bào)告顯示了在進(jìn)行更改(如添加或刪除bean和設(shè)置配置屬性)時(shí)對(duì)應(yīng)用程序的自動(dòng)配置的更改。
若要禁用報(bào)告的日志記錄,請(qǐng)?jiān)O(shè)置以下屬性:
spring.devtools.restart.log-condition-evaluation-delta=false20.2.2 排除資源
某些資源在更改時(shí)不一定需要觸發(fā)重新啟動(dòng),例如,Thymeleaf模板可以就地編輯,默認(rèn)情況下,改變/META-INF/maven、/META-INF/resources、/resources、/static、/public,或/templates的資源不會(huì)觸發(fā)重新啟動(dòng),但會(huì)觸發(fā)重新加載。如果你想定制這些排除性,你可以使用spring.devtools.restart.exclude屬性,例如,僅排除/static和/public,你將設(shè)置以下屬性:
spring.devtools.restart.exclude=static/**,public/**
如果你想要保留這些默認(rèn)值并添加額外的排除,請(qǐng)使用spring.devtools.restart.additional-exclude屬性代替。20.2.3 監(jiān)視附加路徑
當(dāng)你對(duì)不在類(lèi)路徑上的文件進(jìn)行更改時(shí),你可能希望你的應(yīng)用程序重新啟動(dòng)或重新加載??梢赃@樣做,使用spring.devtools.restart.additional-paths屬性來(lái)配置額外的路徑以監(jiān)視更改,你可以使用前面描述的spring.devtools.restart.exclude屬性來(lái)控制在附加路徑下的更改是否會(huì)觸發(fā)完全重啟或重新加載。
20.2.4 禁用重啟如果你不想使用重啟功能,你可以使用spring.devtools.restart.enabled屬性禁用它。在大多數(shù)情況下,你可以在application.properties中設(shè)置此屬性。(這樣做仍然初始化重啟類(lèi)加載器,但它不注意文件的更改)。
如果你需要完全禁用重新啟動(dòng)支持(例如,因?yàn)樗荒芘c特定的庫(kù)一起工作),那么你需要設(shè)置spring.devtools.restart.enabled System屬性為false,然后調(diào)用SpringApplication.run(…),如下例所示:
public static void main(String[] args) { System.setProperty("spring.devtools.restart.enabled", "false"); SpringApplication.run(MyApp.class, args); }20.2.5 使用觸發(fā)器文件
如果你使用一個(gè)持續(xù)編譯已更改文件的IDE,你可能只需要在特定的時(shí)間觸發(fā)重新啟動(dòng),為此,你可以使用一個(gè)“觸發(fā)文件”,它是一個(gè)特殊的文件,當(dāng)你想要實(shí)際觸發(fā)重新啟動(dòng)檢查時(shí),必須對(duì)其進(jìn)行修改。更改文件只會(huì)觸發(fā)檢查,只有當(dāng)Devtools檢測(cè)到它必須做某事時(shí)才會(huì)重新啟動(dòng)。觸發(fā)器文件可以手動(dòng)更新,也可以使用IDE插件進(jìn)行更新。
要使用一個(gè)觸發(fā)器文件,請(qǐng)將spring.devtools.restart.trigger-file屬性設(shè)置為觸發(fā)器文件的路徑。
你可能想要設(shè)置spring.devtools.restart.trigger-file作為全局設(shè)置,以便所有的項(xiàng)目都以相同的方式運(yùn)行。20.2.6 自定義重啟類(lèi)加載器
如前所述,在重啟與重載部分中,重新啟動(dòng)功能是通過(guò)使用兩個(gè)類(lèi)加載器實(shí)現(xiàn)的,對(duì)于大多數(shù)應(yīng)用程序來(lái)說(shuō),這種方法運(yùn)行良好。然而,它有時(shí)會(huì)導(dǎo)致類(lèi)加載問(wèn)題。
默認(rèn)情況下,IDE中的任何開(kāi)放項(xiàng)目都包含“重啟”類(lèi)加載器,任何常規(guī)的.jar文件都裝載了“基礎(chǔ)”類(lèi)加載器,如果你在一個(gè)多模塊項(xiàng)目中工作,而不是每個(gè)模塊都導(dǎo)入到你的IDE中,你可能需要定制一些東西。為此,你可以創(chuàng)建一個(gè)META-INF/spring-devtools.properties文件。
spring-devtools.properties可以包含有restart.exclude和restart.include的屬性,include元素是應(yīng)該被拉到“重啟”類(lèi)加載器中的項(xiàng),而exclude元素則是應(yīng)該被推入“基礎(chǔ)”類(lèi)加載器的項(xiàng),屬性的值是應(yīng)用于類(lèi)路徑的regex模式,如下例所示:
restart.exclude.companycommonlibs=/mycorp-common-[w-]+.jar restart.include.projectcommon=/mycorp-myproj-[w-]+.jar
所有屬性鍵必須是唯一的,只有屬性以restart.include.或restart.exclude.開(kāi)頭才被認(rèn)可。
所有類(lèi)路徑下的META-INF/spring-devtools.properties被加載,你可以在項(xiàng)目中或項(xiàng)目使用的庫(kù)中打包文件。20.2.7 已知的限制
通過(guò)使用標(biāo)準(zhǔn)ObjectInputStream來(lái)反序列化的對(duì)象,重新啟動(dòng)功能不會(huì)很好地工作,如果需要反序列化數(shù)據(jù),可能需要使用Spring的ConfigurableObjectInputStream和Thread.currentThread().getcontextclassloader()。
不幸的是,一些第三方庫(kù)在不考慮上下文類(lèi)加載器的情況下反序列化。如果你發(fā)現(xiàn)這樣的問(wèn)題,你需要向原始作者請(qǐng)求修復(fù)。
20.3 LiveReloadspring-boot-devtools模塊包含一個(gè)嵌入式的LiveReload服務(wù)器,當(dāng)資源被更改時(shí),它可以用來(lái)觸發(fā)瀏覽器刷新。LiveReload瀏覽器擴(kuò)展可以從livereload.com免費(fèi)提供給Chrome、Firefox和Safari。
如果你不想在應(yīng)用程序運(yùn)行時(shí)啟動(dòng)LiveReload服務(wù)器,則可以設(shè)置spring.devtools.livereload.enabled屬性為false。
你一次只能運(yùn)行一個(gè)LiveReload服務(wù)器,在啟動(dòng)應(yīng)用程序之前,確保沒(méi)有其他的LiveReload服務(wù)器在運(yùn)行。如果你在IDE中啟動(dòng)多個(gè)應(yīng)用程序,那么只有第一個(gè)應(yīng)用程序得到了LiveReload的支持。20.4 全局設(shè)置
你可以通過(guò)添加名為.spring-boot-devtools.properties的文件來(lái)配置全局devtools設(shè)置到$HOME文件夾(注意文件名以“.”開(kāi)頭)。添加到該文件的任何屬性都適用于使用devtools的機(jī)器上的所有Spring Boot應(yīng)用程序。例如,要配置重新啟動(dòng)以始終使用觸發(fā)器文件,你需要添加以下屬性:
~/.spring-boot-devtools.properties.
spring.devtools.reload.trigger-file=.reloadtrigger20.5.遠(yuǎn)程應(yīng)用程序
Spring Boot開(kāi)發(fā)工具并不局限于本地開(kāi)發(fā),在遠(yuǎn)程運(yùn)行應(yīng)用程序時(shí),還可以使用幾個(gè)特性。遠(yuǎn)程支持是可選的,要啟用它,你需要確保將devtools包含在重新打包的歸檔文件中,如下面的清單所示:
org.springframework.boot spring-boot-maven-plugin false
然后你需要設(shè)置spring.devtools.remote.secret屬性,如下面的示例所示:
spring.devtools.remote.secret=mysecret
在遠(yuǎn)程應(yīng)用程序上啟用spring-boot-devtools是一種安全風(fēng)險(xiǎn),你不應(yīng)該在生產(chǎn)部署上啟用支持。
遠(yuǎn)程devtools支持分兩部分提供:一個(gè)服務(wù)器端端點(diǎn)接受連接,一個(gè)客戶端應(yīng)用程序在IDE中運(yùn)行。當(dāng)spring.devtools.remote.secret屬性被設(shè)置時(shí),服務(wù)器組件自動(dòng)啟用,客戶端組件必須手動(dòng)啟動(dòng)。
20.5.1 運(yùn)行遠(yuǎn)程客戶端應(yīng)用程序遠(yuǎn)程客戶端應(yīng)用程序設(shè)計(jì)為從你的IDE中運(yùn)行,你需要運(yùn)行org.springframework.boot.devtools.RemoteSpringApplication與你連接到的遠(yuǎn)程項(xiàng)目相同的類(lèi)路徑,應(yīng)用程序的唯一必需參數(shù)是它連接的遠(yuǎn)程URL。
例如,如果你正在使用Eclipse或STS,并且你有一個(gè)名為my-app的項(xiàng)目,你已經(jīng)部署到Cloud Foundry,那么你將執(zhí)行以下操作:
從Run菜單選擇Run Configurations…?。
創(chuàng)建一個(gè)新的Java Application“l(fā)aunch configuration”。
瀏覽my-app項(xiàng)目。
使用org.springframework.boot.devtools.RemoteSpringApplication作為主類(lèi)。
添加https://myapp.cfapps.io到Program arguments(或任何遠(yuǎn)程URL)。
正在運(yùn)行的遠(yuǎn)程客戶端可能類(lèi)似于以下清單:
. ____ _ / / ___"_ __ _ _(_)_ __ __ _ ( ( )\___ | "_ | "_| | "_ / _` | / ___)| |_)| | | | | || (_| []::::::[] / -_) " __ _ _ ___ _ | _ \___ _ __ ___| |_ ___ / _ _/ -_) ) ) ) ) " |____| .__|_| |_|_| |_\__, | |_|_\___|_|_|_\___/\__\___|/ / / / =========|_|==============|___/===================================/_/_/_/ :: Spring Boot Remote :: 2.0.5.RELEASE 2015-06-10 18:25:06.632 INFO 14938 --- [main] o.s.b.devtools.RemoteSpringApplication : Starting RemoteSpringApplication on pwmbp with PID 14938 (/Users/pwebb/projects/spring-boot/code/ spring-boot-devtools/target/classes started by pwebb in /Users/pwebb/projects/spring-boot/code/ spring-boot-samples/spring-boot-sample-devtools) 2015-06-10 18:25:06.671 INFO 14938 --- [main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@2a17b7b6: startup date [Wed Jun 10 18:25:06 PDT 2015]; root of context hierarchy 2015-06-10 18:25:07.043 WARN 14938 --- [main] o.s.b.d.r.c.RemoteClientConfiguration : The connection to http://localhost:8080 is insecure. You should use a URL starting with "https://". 2015-06-10 18:25:07.074 INFO 14938 --- [main] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729 2015-06-10 18:25:07.130 INFO 14938 --- [main] o.s.b.devtools.RemoteSpringApplication : Started RemoteSpringApplication in 0.74 seconds (JVM running for 1.105)
因?yàn)檫h(yuǎn)程客戶端使用與實(shí)際應(yīng)用程序相同的類(lèi)路徑,它可以直接讀取應(yīng)用程序?qū)傩浴_@是spring.devtools.remote.secret屬性被讀取并傳遞給服務(wù)器進(jìn)行身份驗(yàn)證的方法。
使用https://作為連接協(xié)議總是明智的,這樣就可以加密傳輸并不能截獲密碼。
如果需要使用代理訪問(wèn)遠(yuǎn)程應(yīng)用程序,請(qǐng)配置spring.devtools.remote.proxy.host和spring.devtools.remote.proxy.port屬性。20.5.2 遠(yuǎn)程更新
遠(yuǎn)程客戶端監(jiān)控你的應(yīng)用程序類(lèi)路徑,以與本地重啟相同的方式進(jìn)行更改。任何更新的資源都被推送到遠(yuǎn)程應(yīng)用程序,并且(如果需要的話)觸發(fā)重啟。如果你在一個(gè)使用不是本地的云服務(wù)的特性上進(jìn)行迭代,這將是很有幫助的。一般來(lái)說(shuō),遠(yuǎn)程更新和重新啟動(dòng)比完整的重建和部署周期要快得多。
文件只在遠(yuǎn)程客戶機(jī)運(yùn)行時(shí)受到監(jiān)視,如果在啟動(dòng)遠(yuǎn)程客戶端之前更改一個(gè)文件,則不會(huì)將其推送到遠(yuǎn)程服務(wù)器。21.為生產(chǎn)打包你的應(yīng)用程序
可執(zhí)行jar可以用于生產(chǎn)部署,由于它們是自包含的,所以它們也非常適合基于云的部署。
對(duì)于額外的“生產(chǎn)就緒”特性,如健康、審計(jì)和指標(biāo)REST或JMX端點(diǎn),考慮添加spring-boot-actuator,參見(jiàn)第V部分,“Spring Boot Actuator:生產(chǎn)就緒特性”的詳細(xì)信息。
22.下一步要讀什么現(xiàn)在你應(yīng)該了解了如何使用Spring Boot和你應(yīng)該遵循的一些最佳實(shí)踐,現(xiàn)在,你可以深入了解特定的Spring Boot特性,或者你可以跳過(guò),閱讀Spring Boot的“生產(chǎn)就緒”方面的內(nèi)容。
上一篇:運(yùn)行你的應(yīng)用程序 下一篇:SpringApplication文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/69524.html
摘要:參考指南使你可以輕松地創(chuàng)建可運(yùn)行的獨(dú)立的生產(chǎn)級(jí)的基于的應(yīng)用程序,我們對(duì)平臺(tái)和第三方庫(kù)有自己的看法,這樣你就可以以最低限度工作開(kāi)始了,大多數(shù)應(yīng)用程序都需要很少的配置。文檔本節(jié)簡(jiǎn)要概述了參考文檔,它充當(dāng)文檔其余部分的映射。 Spring Boot 參考指南 Spring Boot使你可以輕松地創(chuàng)建可運(yùn)行的獨(dú)立的、生產(chǎn)級(jí)的基于Spring的應(yīng)用程序,我們對(duì)Spring平臺(tái)和第三方庫(kù)有自己的看...
摘要:關(guān)于文檔參考指南可用如下方式最新的副本可以在中找到。嘗試操作文檔,它們?yōu)樽畛R?jiàn)的問(wèn)題提供解決方案。學(xué)習(xí)基礎(chǔ),構(gòu)建在許多其他項(xiàng)目上,網(wǎng)站提供豐富的參考文檔,如果你要從開(kāi)始,嘗試其中一個(gè)指南。我們對(duì)進(jìn)行監(jiān)視,以解決帶有標(biāo)記的問(wèn)題。 1. 關(guān)于文檔 Spring Boot 參考指南可用如下方式: HTML PDF EPUB 最新的副本可以在 docs.spring.io/spring-b...
摘要:安裝可以與經(jīng)典開(kāi)發(fā)工具一起使用,也可以作為命令行工具安裝。下面的示例展示了一個(gè)典型的文件安裝命令行接口是一個(gè)命令行工具,你可以使用它來(lái)快速地實(shí)現(xiàn)的原型。 10. 安裝Spring Boot Spring Boot可以與經(jīng)典Java開(kāi)發(fā)工具一起使用,也可以作為命令行工具安裝。無(wú)論哪種方式,都需要Java SDK v1.8或更高版本。在開(kāi)始之前,你應(yīng)該使用以下命令檢查當(dāng)前的Java安裝: ...
摘要:我們的主要目標(biāo)是為所有開(kāi)發(fā)提供一個(gè)非??斓膹V泛可訪問(wèn)的入門(mén)體驗(yàn)。要跳出固有的思維模式,但是當(dāng)需求開(kāi)始偏離默認(rèn)設(shè)置時(shí),要迅速避開(kāi)。提供大型項(xiàng)目如嵌入式服務(wù)器安全性指標(biāo)健康檢查和外部化配置所共有的一系列非功能特性。系統(tǒng)要求需要或和或以上。 8. Spring Boot介紹 Spring Boot使你可以輕松地創(chuàng)建可運(yùn)行的獨(dú)立的、生產(chǎn)級(jí)的基于Spring的應(yīng)用程序,我們對(duì)Spring平臺(tái)和第...
摘要:從運(yùn)行你可以從運(yùn)行應(yīng)用程序作為簡(jiǎn)單的應(yīng)用程序,但是,你首先需要導(dǎo)入你的項(xiàng)目,導(dǎo)入步驟取決于你的和構(gòu)建系統(tǒng)。如果你不小心運(yùn)行了兩次應(yīng)用程序,你你會(huì)看到一個(gè)錯(cuò)誤,用戶可以使用按鈕而不是按鈕來(lái)確保任何現(xiàn)有實(shí)例都已關(guān)閉。 19. 運(yùn)行你的應(yīng)用程序 將你的應(yīng)用程序打包為jar并使用嵌入式HTTP服務(wù)器的最大優(yōu)點(diǎn)之一是,你可以像對(duì)待其他應(yīng)用程序一樣運(yùn)行應(yīng)用程序,調(diào)試Spring Boot應(yīng)用程序也...
摘要:安裝可以使用手動(dòng)安裝命令行接口或如果你是用戶,可以使用或。有關(guān)全面的安裝說(shuō)明,請(qǐng)參閱開(kāi)始部分中的第節(jié),安裝。推斷抓取依賴項(xiàng)標(biāo)準(zhǔn)包含一個(gè)注解,它允許你聲明對(duì)第三方庫(kù)的依賴關(guān)系,這個(gè)有用的技術(shù)讓可以像或那樣下載,但不需要你使用構(gòu)建工具。 第VII章. Spring Boot CLI 如果你想快速開(kāi)發(fā)Spring應(yīng)用程序,可以使用Spring Boot CLI命令行工具,它允許你運(yùn)行Groo...
閱讀 936·2021-10-13 09:48
閱讀 3934·2021-09-22 10:53
閱讀 3126·2021-08-30 09:41
閱讀 1954·2019-08-30 15:55
閱讀 2933·2019-08-30 15:55
閱讀 1851·2019-08-30 14:11
閱讀 2214·2019-08-29 13:44
閱讀 776·2019-08-26 12:23