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