Java开发人员应该知道的5大Spring Boot功能
您可能已經(jīng)聽說過Spring Boot,這是用不到140個字符創(chuàng)建一個Spring Web應(yīng)用程序的神奇力量,可以在一條推文中編寫這些字符,但這到底意味著什么? 哪些功能可以使Spring Boot具有如此強(qiáng)大的功能并使Spring應(yīng)用程序開發(fā)如此容易? 好吧,這就是您將在本文中學(xué)到的內(nèi)容,但是如果您急著讓我告訴您,您將詳細(xì)了解Spring Boot的自動配置,Starter依賴項,Spring Boot CLI,Actuator和Spring Initializer功能。 這些功能消除了編寫基于Spring的Java Web應(yīng)用程序所帶來的大部分痛苦和磨擦。
但是,在進(jìn)行詳細(xì)介紹之前,讓我們重新回顧與基于Spring的Java開發(fā)相關(guān)的問題。 我個人希望先看到問題,然后才能享受解決方案。 請記住,只有經(jīng)過艱苦的努力,舒適才會感覺更好,一頓飯也是如此,饑餓時您會享受更多。
毫無疑問,Spring是一個很棒的框架,它可以為您做很多事情,例如,它為您創(chuàng)建了一個對象,為它們提供了相關(guān)性,如果Spring不存在,它會帶走您可能編寫的許多代碼,但作為回報它在配置和學(xué)習(xí)方面也要求您很多。
如果您曾經(jīng)在一個未開發(fā)的項目中工作過,那么您從頭開始啟動了一個新的基于Spring的Java應(yīng)用程序,那么您就會知道這并不是小菜一碟。 您首先需要找到所需的所有依賴項,然后是它們的兼容版本。 您還需要配置很多bean來啟用一些Spring Magic。
例如,如果您要創(chuàng)建一個基于Spring MVC的REST應(yīng)用程序 ,該應(yīng)用程序在嵌入式tomcat中支持JSON格式,則您的Maven pom.xml文件(例如spring-core.jar,spring-mvc.jar, jackson.jar,embedded-tomcat.jar等,請注意,這是一個非常簡單的設(shè)置。
Spring Boot消除了所有這些麻煩,讓您編寫重要的代碼,即應(yīng)用程序代碼。 我提到的所有Spring Boot功能(例如自動配置,Starter POM或Starter依賴項)以及Spring Boot CLI旨在簡化Spring的Java開發(fā)。
現(xiàn)在,讓我們詳細(xì)介紹這些功能中的每一個
1.自動配置
您可能曾經(jīng)使用過基于Spring的Java Web應(yīng)用程序,該應(yīng)用程序連接到關(guān)系數(shù)據(jù)庫,例如像H2這樣的內(nèi)存數(shù)據(jù)庫,如果是,那么您可能知道需要將JdbcTemplate聲明為bean,并且還需要配置一個DataSource。 JdbcTempalte的依賴項。
在使用基于Java的configuration的現(xiàn)代Spring應(yīng)用程序中,您需要將以下兩種方法添加到您的
配置類:
對于已經(jīng)完成Spring開發(fā)的人來說,這并不是什么復(fù)雜的事情,但是如果您是從頭開始的話,可能要花幾個小時甚至幾天才能弄清楚。
但是,更重要的是,這是我們許多人編寫的一段代碼,與我們的應(yīng)用程序無關(guān)。 我的意思是,該代碼不是唯一的,并且每個與JDBC兼容的Spring應(yīng)用程序都需要它。
這就是Spring Boot AutoConfiguration出現(xiàn)的地方。 它檢測到Classpath中存在某些Class,然后自動為您配置它。
例如,如果您已經(jīng)將JdbcTempalte和H2.jar添加到了類路徑中,那么Spring Boot可以為您自動配置一個內(nèi)存數(shù)據(jù)庫和一個可供使用的JdbcTempatle。 您無需編寫上述代碼即可在DAO層中使用JdbcTemplate 。
這只是一個例子。 Spring Boot的自動配置可以做出200多種決策,并通過檢查JAR依賴關(guān)系自動配置許多功能。 例如,如果存在spring-mvc.jar,則它可以自動配置DispatcherServlet , InternalViewResolver等。
如果存在JPA和Hibernate,則它也可以配置它,如果您具有spring-security.jar,則它甚至可以配置基本安全性來保護(hù)您的應(yīng)用程序。
順便說一句,當(dāng)涉及到自動配置時,需要深入的知識來適當(dāng)?shù)乇Wo(hù)您的應(yīng)用程序。
默認(rèn)情況下,自動配置功能是禁用的,您需要通過在Configuration類上使用@EnableAutoConfiguration或@SpringBootApplication批注來啟用它。 我通常會注釋Main類,它將與嵌入式Tomcat服務(wù)器一起運(yùn)行。
從Spring Boot 1.2開始,建議使用@SpringBootApplication批注,因為它結(jié)合了其他兩個批注以使您的代碼更具可讀性。
簡而言之,Spring Boot的自動配置功能可節(jié)省大量工作并減少開發(fā)時間,我強(qiáng)烈建議您在使用Spring Boot時使用自動配置。
2.入門級POM
盡管自動配置消除了配置通用功能的麻煩,但Starter POM通過在項目中查找和添加通用依賴關(guān)系而減輕了痛苦。
為了構(gòu)建一個支持Jackson的簡單的基于Spring MVC的REST應(yīng)用程序并在嵌入式容器中運(yùn)行它,您至少需要遵循以下依賴關(guān)系,例如
spring-core.jar spring-web.jar spring-webmvc.jar jackson-databind.jar tomcat-embed-core.jar tomcat-embed-el.jar tomcat-embed-logging-juil.jar通過使用Spring Boot Starter POM或啟動程序依賴項功能,只需在pom.xml中添加spring-boot-starter-web依賴項就可以獲取所有這些信息
因此,您無需添加所有這些依賴項并擔(dān)心它們的兼容版本,只需添加一個即可。 您還將更加自信地使用了久經(jīng)考驗的庫版本,將來不會出現(xiàn)任何不兼容性問題。
入門POM功能的另一個細(xì)微優(yōu)點是您無需記住或搜索依賴項。 如果要構(gòu)建Web應(yīng)用程序,則可以添加“ Web”啟動器(如果要構(gòu)建)
JPA應(yīng)用程序可以通過按功能聚合常見的依賴項來添加“ jpa”啟動程序,Spring Boot使它們易于記憶和使用。
順便說一句,如果您想了解Starter POMs功能在內(nèi)部如何工作,那么讓我告訴您所有魔術(shù)都來自Maven或Gradle的傳遞依賴項功能。 是Maven或Gradle提取正確版本的庫,Starter POM只是聲明它們。 如果您想了解更多信息,建議您閱讀Dan Vega的Spring Boot快速應(yīng)用程序開發(fā)課程。
簡而言之,Starter POM或Starter依賴項是Spring Boot的另一個很棒的功能,它確實有助于簡化Spring應(yīng)用程序的開發(fā)。 就像自動配置的近親一樣,您將經(jīng)常一起使用它們。
3. Spring Boot CLI
在本文的第一段中,我說過現(xiàn)在可以創(chuàng)建一個Java Web應(yīng)用程序,該應(yīng)用程序可以放入推文中,并且由于Groovy和Spring Boot CLI的緣故,這種情況發(fā)生了。
Spring Boot CLI是Spring Boot框架提供的命令行界面,可讓您使用Groovy編程語言創(chuàng)建基于Spring的Web應(yīng)用程序。 實際上,Groovy和Spring Boot很好地互補(bǔ),Groovy的目標(biāo)是使Java開發(fā)更簡單,而Spring Boot的目標(biāo)是使Spring應(yīng)用程序開發(fā)更簡單,并且彼此都從彼此的簡單性中受益。
盡管自動配置和啟動程序依賴項是Spring Boot的不可或缺的功能,但是Spring CLI是可選的,但還需要安裝Spring CLI才能使用它。
這是Groovy和Spring Boot CLI中的一個簡單的HelloWorld RESTful Web服務(wù),它即使不進(jìn)行編譯也可以運(yùn)??行,如下所示:
@RestController class HelloSpringBootController{@RequestMapping("/")def hello() {return "Hello Spring Boot CLI"} }就這樣,您可以在Spring Boot CLI附帶的嵌入式容器上運(yùn)行它,無需web.xml,無需配置,也無需服務(wù)器設(shè)置。
如果您想知道這一切的工作原理,例如Groovy如何了解@RestController和@RequestMapping注釋,那么讓我告訴您Spring Boot CLI利用自動配置和啟動程序POMs功能讓您專注于僅編寫應(yīng)用程序代碼?
Spring Boot CLI檢測到@RestController和@RequestMapping已在使用中,并且知道要添加到類路徑中才能使其正常工作,需要哪些啟動器依賴項。
一旦下載了這些系列的依賴項,自動配置就會自動啟動并對其進(jìn)行配置以供使用,例如,一旦spring-boot-web-starter進(jìn)入圖片,它就會下載spring-mvc.jar,然后自動配置會自動配置DispatcherServlet并啟用Spring MVC。
整件事看起來像是魔術(shù),但這是現(xiàn)實。
4.執(zhí)行器
該執(zhí)行器是Spring Boot的另一個很棒的功能,它可以查看正在運(yùn)行的Spring Boot應(yīng)用程序中發(fā)生的情況。 由于具有自動配置的所有優(yōu)點,因此存在不知道應(yīng)用程序內(nèi)部內(nèi)容是什么的風(fēng)險,并且該風(fēng)險由Spring Actuator解決。
它提供了有關(guān)生產(chǎn)中正在運(yùn)行的應(yīng)用程序的大量見解和指標(biāo)。 例如,通過使用Actuator,您可以準(zhǔn)確找出在Application上下文中配置了哪些bean,做出了哪些自動配置決策,哪些環(huán)境變量,系統(tǒng)屬性,命令行參數(shù)可用于應(yīng)用程序等等。
您甚至可以跟蹤應(yīng)用程序處理的H??TTP請求以及各種有用的應(yīng)用程序指標(biāo),例如CPU和內(nèi)存使用率,垃圾收集詳細(xì)信息,Web請求和數(shù)據(jù)源使用率。
Spring Boot Actuator還提供了多個端點來檢索此數(shù)據(jù),例如,您可以使用RESTful API來獲取所有這些數(shù)據(jù),或者可以使用其遠(yuǎn)程Shell功能來安全地進(jìn)入應(yīng)用程序內(nèi)部并通過發(fā)出命令來獲取所有這些信息。
它還使用JMX MBean公開了所有這些功能,這意味著您可以在運(yùn)行時使用JConsole之類的JMX客戶端來控制它們。
同時,您還需要保護(hù)對Actuator端點的訪問,因為它不僅會泄露機(jī)密信息,而且很危險。 例如,任何人都可以使用/ shutdown端點來停止您的應(yīng)用程序。
不過,您不必?fù)?dān)心。 像其他任何Spring應(yīng)用程序一樣,您可以使用Spring Security保護(hù)Actuator端點。
5. Spring Boot初始化器
Spring Initializer是Spring Boot的另一個功能,可以解決項目結(jié)構(gòu)方面的問題。 這是一個Web應(yīng)用程序,允許您使用Java,Kotline或Groovy和Spring Boot生成Maven或Gradle項目。
您需要指定的只是在GUI中提供項目元數(shù)據(jù),例如項目名稱,組,工件等。它還允許您從較大的列表中選擇啟動程序依賴性,例如Web,JPA或安全啟動程序。
可以從https://start.spring.io/訪問Spring Initializer項目。 創(chuàng)建項目后,您可以下載Zip文件,然后按Nelson Djalo的Spring Boot Essential課程中的說明打開到Eclipse或IntelliJ IDEA之類的IDE中。 然后,您可以編輯此示例項目以放入您的代碼。
根據(jù)我的經(jīng)驗,許多Java和Spring開發(fā)人員面臨的常見問題之一是啟動一個項目。 他們中的許多人對于是否放置Java文件,資源文件等一無所知。
盡管Maven ,Gradle, IntelliJ IDEA和Eclipse可以幫助您提供基本的結(jié)構(gòu),但您仍然需要精通這兩種技能才能快速入門,并且如果您不熟悉Maven或IDE,那可能是一場噩夢。
Spring Boot Initaizer解決了這個問題,使創(chuàng)建基于Spring的Java應(yīng)用程序變得容易,而無需真正了解Spring框架的許多內(nèi)部細(xì)節(jié)。
這就是Java開發(fā)人員應(yīng)該知道的Spring Boot的一些基本功能 。 這些功能確實使使用Java和Spring變得有趣且富有成效,這就是為什么越來越多的公司采用Spring Boot進(jìn)行Java開發(fā)的原因。 對具有Spring Boot經(jīng)驗的Java開發(fā)人員的需求也很高,如果您正在尋找下一個Java Web開發(fā)人員的工作,那么Spring Boot的技能確實會有所作為。
到目前為止,非常感謝您閱讀本文。 如果您喜歡這些Spring Boot功能,請與您的朋友和同事分享。 如果您有任何疑問或反饋,請留言
翻譯自: https://www.javacodegeeks.com/2018/11/spring-features-java-developers-know.html
總結(jié)
以上是生活随笔為你收集整理的Java开发人员应该知道的5大Spring Boot功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软 Win11 Linux 子系统(W
- 下一篇: java 使用本机代理_Java与本机代