自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java 開(kāi)發(fā)人員應(yīng)該知道的五大 Spring Boot 特性

開(kāi)發(fā) 架構(gòu)
您可能聽(tīng)說(shuō)過(guò) Spring Boot,它的神奇力量是創(chuàng)建一個(gè)不到 140 個(gè)字符的 Spring Web 應(yīng)用程序,可以寫在一條推文中,但這究竟意味著什么?

您可能聽(tīng)說(shuō)過(guò) Spring Boot,它的神奇力量是創(chuàng)建一個(gè)不到 140 個(gè)字符的 Spring Web 應(yīng)用程序,可以寫在一條推文中,但這究竟意味著什么?是什么特性為 Spring Boot 提供了如此強(qiáng)大的功能并使 Spring 應(yīng)用程序開(kāi)發(fā)如此簡(jiǎn)單?好吧,這就是您將在本文中學(xué)習(xí)的內(nèi)容,但是如果您趕時(shí)間,讓我告訴您,您將詳細(xì)了解 Spring Boot 的自動(dòng)配置、Starter 依賴項(xiàng)、Spring Boot CLI、Actuator 和 Spring Initializer 功能。這些特性消除了與編寫基于 Spring 的 Java Web 應(yīng)用程序相關(guān)的大部分痛苦和摩擦。

但是,在進(jìn)入這個(gè)細(xì)節(jié)之前,讓我們重新審視一下與基于 Spring 的 Java 開(kāi)發(fā)相關(guān)的問(wèn)題。我個(gè)人喜歡在享受解決方案之前先看到問(wèn)題并感受它。請(qǐng)記住,只有在努力工作后才會(huì)感到舒適,用餐也是如此,當(dāng)您餓了時(shí),您會(huì)更享受。

Spring 無(wú)疑是一個(gè)很棒的框架,它為你做了很多事情,例如它為你創(chuàng)建了一個(gè)對(duì)象,它為它們提供了它們的依賴關(guān)系,如果 Spring 不存在,它會(huì)帶走你編寫的大量代碼,但作為回報(bào)它在配置和學(xué)習(xí)方面也對(duì)你提出了很多要求。

如果您曾經(jīng)在一個(gè)新建項(xiàng)目中工作過(guò),并且您從頭開(kāi)始創(chuàng)建一個(gè)全新的基于 Spring 的 Java 應(yīng)用程序,那么您就會(huì)知道這不是小菜一碟。您首先需要找到所需的所有依賴項(xiàng),然后找到它們的兼容版本。您還需要配置很多 bean 來(lái)啟用一些 Spring 魔法。

例如,如果你想創(chuàng)建一個(gè) 基于 Spring MVC 的 REST 應(yīng)用程序,它支持嵌入式 tomcat 中的 JSON 格式,那么你的 Maven pom.xml 文件中至少有 8 到 10 個(gè)依賴項(xiàng),例如 spring-core.jar、spring-mvc.jar、 jackson.jar、embedded-tomcat.jar 等,請(qǐng)注意這是一個(gè)非常簡(jiǎn)單的設(shè)置。

Spring Boot 只是消除了所有這些痛苦,讓您編寫重要的代碼,即應(yīng)用程序代碼。我提到的所有 Spring Boot 特性,例如自動(dòng)配置、Starter POM 或 Starter 依賴項(xiàng)以及 Spring Boot CLI 旨在簡(jiǎn)化使用 Spring 的 Java 開(kāi)發(fā)。

現(xiàn)在,讓我們更詳細(xì)地了解這些功能中的每一個(gè)

1、 自動(dòng)配置

您可能使用過(guò)基于 Spring 的 Java Web 應(yīng)用程序,該應(yīng)用程序連接到關(guān)系數(shù)據(jù)庫(kù),例如像 H2 這樣的內(nèi)存數(shù)據(jù)庫(kù),如果是,那么您可能知道您需要聲明JdbcTemplate為 bean,并且還需要配置一個(gè) DataSource,它是JdbcTempalte 的依賴項(xiàng)。

在使用基于 Java 的現(xiàn)代 Spring 應(yīng)用程序中configuration,您需要將以下兩個(gè)方法添加到您的

Configuration 類中:

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">@豆</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
公共 JdbcTemplate jdbcTempalte(DateSource ds){</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
返回新的 JdbcTempalte(ds);</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
}</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
@豆</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
公共數(shù)據(jù)源數(shù)據(jù)源(){</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
返回新的 EmbeddedDatabaseBuilder()</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
.setType(EmbeddedDatabaseType.H2)</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
.addScripts('ddl.sql', 'data.sql')</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
。建造();</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
}</font></font>

對(duì)于做過(guò) Spring 開(kāi)發(fā)的人來(lái)說(shuō),這并不是一個(gè)復(fù)雜的問(wèn)題,但是如果您重新開(kāi)始,那么可能需要數(shù)小時(shí)和數(shù)天才能弄清楚這一點(diǎn)。

但是,更重要的是,這是我們?cè)S多人編寫的一段代碼,與我們的應(yīng)用程序無(wú)關(guān)。我的意思是,這段代碼不是唯一的,每個(gè)使用 JDBC 的 Spring 應(yīng)用程序都需要它。

這就是 Spring Boot AutoConfiguration 發(fā)揮作用的地方。它會(huì)檢測(cè)類路徑中是否存在某個(gè)類,然后自動(dòng)為您配置它。

例如,如果您已經(jīng)添加JdbcTempalte到類路徑和 H2.jar 中,那么 Spring Boot 可以自動(dòng)為您配置一個(gè)內(nèi)存數(shù)據(jù)庫(kù)和一個(gè)可以使用的 JdbcTempatle。您無(wú)需編寫上述代碼即可JdbcTemplate在 DAO 層中使用。

這只是一個(gè)例子。Spring Boot 自動(dòng)配置做出了 200 多個(gè)這樣的決定,并通過(guò)檢查 JAR 依賴關(guān)系自動(dòng)配置許多功能。例如,如果 spring-mvc.jar 存在,那么它可以自動(dòng)配置 DispatcherServlet、 InternalViewResolver等。

如果存在 JPA 和 Hibernate,那么它也可以配置它,如果你有 spring-security.jar,那么它甚至可以配置一個(gè)基本的安全性來(lái)保護(hù)你的應(yīng)用程序。

順便說(shuō)一句,在依賴自動(dòng)配置時(shí),需要深入了解才能正確保護(hù)您的應(yīng)用程序。

默認(rèn)情況下,自動(dòng)配置功能處于禁用狀態(tài),您需要通過(guò)在配置類上使用@EnableAutoConfiguration或@SpringBootApplication注釋來(lái)啟用它。我通常注釋 Main 類,我將使用嵌入式 Tomcat 服務(wù)器運(yùn)行該類。

建議@SpringBootApplication從 Spring Boot 1.2 開(kāi)始使用注解,因?yàn)樗Y(jié)合了其他幾個(gè)注解以使您的代碼更具可讀性。

簡(jiǎn)而言之,Spring Boot 的自動(dòng)配置功能節(jié)省了大量工作并減少了開(kāi)發(fā)時(shí)間,我強(qiáng)烈建議您在使用 Spring Boot 時(shí)使用自動(dòng)配置。

2、 入門 POM

雖然 AutoConfiguration 消除了配置通用功能的痛苦,但 Starter POM 通過(guò)在項(xiàng)目中查找和添加通用依賴項(xiàng)來(lái)消除痛苦。

為了構(gòu)建一個(gè)簡(jiǎn)單的基于 Spring MVC 的支持 Jackson的 REST 應(yīng)用程序并運(yùn)行它一個(gè)嵌入式容器,您至少需要以下依賴項(xiàng),例如

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">spring-core.jar</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
spring-web.jar</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
spring-webmvc.jar</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
杰克遜-databind.jar</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
tomcat-embed-core.jar</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
tomcat-embed-el.jar</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
tomcat-embed-logging-juil.jar</font></font>

通過(guò)使用 Spring Boot Starter POM 或 starter 依賴功能,您只需在 pom.xml 中添加 spring-boot-starter-web 依賴即可獲得所有這些

因此,無(wú)需添加所有這些依賴項(xiàng)并擔(dān)心它們的兼容版本,您只需添加一個(gè)即可。您還將更有信心使用經(jīng)過(guò)嘗試和測(cè)試的庫(kù)版本,并且將來(lái)不會(huì)出現(xiàn)任何不兼容問(wèn)題。

啟動(dòng) POM 功能的另一個(gè)微妙好處是您不需要記住或搜索依賴項(xiàng)。如果您正在構(gòu)建 web 應(yīng)用程序,您可以添加一個(gè)“web”啟動(dòng)器,如果您正在構(gòu)建

JPA 應(yīng)用程序,您可以添加“jpa”啟動(dòng)器,通過(guò)按功能聚合常見(jiàn)的依賴項(xiàng) Spring Boot 使它們易于記憶和使用。

順便說(shuō)一句,如果您想知道 Starter POM 功能在內(nèi)部是如何工作的,那么讓我告訴您所有的魔法都來(lái)自 Maven 或 Gradle 的傳遞依賴功能。提取正確版本的庫(kù)的是 Maven 或 Gradle,Starter POM 只需聲明它們。如果您想了解更多信息,我建議您查看 Dan Vega 的 Spring Boot 快速應(yīng)用程序開(kāi)發(fā)課程。

簡(jiǎn)而言之,Starter POM 或 starter 依賴是 Spring Boot 的另一個(gè)很棒的特性,它確實(shí)有助于簡(jiǎn)化 Spring 應(yīng)用程序的開(kāi)發(fā)。它就像自動(dòng)配置的近親,你會(huì)經(jīng)常一起使用它們。

3、 Spring Boot CLI

在本文的第一段中,我說(shuō)過(guò)現(xiàn)在可以創(chuàng)建一個(gè)適合推文的 Java Web 應(yīng)用程序,這得益于 Groovy 和 Spring Boot CLI。

Spring Boot CLI 是 Spring Boot 框架提供的命令行界面,它允許您使用 Groovy 編程語(yǔ)言創(chuàng)建基于 Spring 的 Web 應(yīng)用程序。實(shí)際上,Groovy 和 Spring Boot 很好地互補(bǔ),Groovy 旨在使 Java 開(kāi)發(fā)更簡(jiǎn)單,而 Spring Boot 旨在使 Spring 應(yīng)用程序開(kāi)發(fā)更簡(jiǎn)單,并且都從彼此的簡(jiǎn)單性中受益。

雖然自動(dòng)配置和啟動(dòng)器依賴項(xiàng)是 Spring Boot 的一個(gè)組成部分,但 Spring CLI 是一個(gè)可選功能,您還需要安裝 Spring CLI 才能使用它。

這是 Groovy 和 Spring Boot CLI 中的一個(gè)簡(jiǎn)單的 HelloWorld RESTful Web 服務(wù),即使不編譯也可以運(yùn)行,如下所示:

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">@RestController</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
HelloSpringBootController{</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
@RequestMapping("/")</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
定義你好(){</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
返回“你好 Spring Boot CLI”</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
}</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
}</font></font>

就是這樣,您可以在 Spring Boot CLI 附帶的嵌入式容器上運(yùn)行它,無(wú)需 web.xml,無(wú)需配置,也無(wú)需服務(wù)器設(shè)置。

如果您想知道這些整體是如何工作的,即 Groovy 是如何知道 @RestController和@RequestMapping注釋的,那么讓我告訴您 Spring Boot CLI 利用自動(dòng)配置和啟動(dòng) POM 功能讓您只專注于編寫應(yīng)用程序代碼?

Spring Boot CLI 檢測(cè)到@RestController并@RequestMapping正在使用它,它知道需要將哪些啟動(dòng)器依賴項(xiàng)添加到類路徑中才能使其工作。

一旦下載了這一系列依賴項(xiàng),自動(dòng)配置就會(huì)自動(dòng)啟動(dòng)并配置它以供使用,例如,一旦 spring-boot-web-starter 進(jìn)入圖片,它就會(huì)下載 spring-mvc.jar,然后自動(dòng)配置會(huì)自動(dòng)配置 DispatcherServlet并啟用春天MVC。

這整個(gè)事情看起來(lái)像魔術(shù),但它是一個(gè)現(xiàn)實(shí)。

4、執(zhí)行器

執(zhí)行器是 Spring Boot 的另一個(gè)很棒的功能,它允許查看正在運(yùn)行的 Spring Boot 應(yīng)用程序中發(fā)生的事情。憑借其自動(dòng)配置的所有優(yōu)點(diǎn),存在不知道應(yīng)用程序內(nèi)部?jī)?nèi)容的風(fēng)險(xiǎn),而 Spring Actuator 解決了該風(fēng)險(xiǎn)。

它提供了很多關(guān)于生產(chǎn)中正在運(yùn)行的應(yīng)用程序的見(jiàn)解和指標(biāo)。例如,通過(guò)使用 Actuator,您可以準(zhǔn)確了解在應(yīng)用程序上下文中配置了哪些 bean,做出了哪些自動(dòng)配置決策,應(yīng)用程序可以使用哪些環(huán)境變量、系統(tǒng)屬性、命令行參數(shù)等等。

您甚至可以跟蹤應(yīng)用程序處理的 HTTP 請(qǐng)求,以及各種有用的應(yīng)用程序指標(biāo),例如 CPU 和內(nèi)存使用情況、垃圾收集詳細(xì)信息、Web 請(qǐng)求和數(shù)據(jù)源使用情況。

Spring Boot Actuator 還提供了幾個(gè)端點(diǎn)來(lái)檢索這些數(shù)據(jù),例如,您可以使用 RESTful API 獲取所有這些信息,或者您可以使用其遠(yuǎn)程 shell 功能安全地進(jìn)入應(yīng)用程序并通過(guò)發(fā)出命令獲取所有這些信息。

它還使用 JMX MBean 公開(kāi)了所有這些功能,這意味著您可以在運(yùn)行時(shí)使用 JConsole 之類的 JMX 客戶端來(lái)控制它們。

同時(shí),您還需要保護(hù)對(duì) Actuator 端點(diǎn)的訪問(wèn),因?yàn)樗粌H會(huì)暴露機(jī)密信息,而且很危險(xiǎn)。例如,任何人都可以使用 /shutdown 端點(diǎn)來(lái)停止您的應(yīng)用程序。

不過(guò),您不必?fù)?dān)心。與任何其他 Spring 應(yīng)用程序一樣,您可以使用 Spring Security 來(lái)保護(hù) Actuator 端點(diǎn)。

5、 Spring Boot 初始化器

Spring Initializer 是 Spring Boot 的另一個(gè)特性,它解決了項(xiàng)目結(jié)構(gòu)方面的問(wèn)題。它是一個(gè) Web 應(yīng)用程序,允許您使用 Java、Kotline 或 Groovy 和 Spring Boot 生成 Maven 或 Gradle 項(xiàng)目。

您需要指定的只是在 GUI 中提供項(xiàng)目元數(shù)據(jù),例如項(xiàng)目名稱、組、工件等。它還允許您從大列表中選擇啟動(dòng)器依賴項(xiàng),例如 web、JPA 或安全啟動(dòng)器。

Spring Initializer 項(xiàng)目可以在 https://start.spring.io/ 訪問(wèn)。創(chuàng)建項(xiàng)目后,您可以下載 Zip 文件,然后打開(kāi) IDE,如 Eclipse 或 IntelliJ IDEA,如 Nelson Djalo 的 Spring Boot Essential 課程中所述。然后,您可以編輯此示例項(xiàng)目以放置您的代碼。

根據(jù)我的經(jīng)驗(yàn),許多 Java 和 Spring 開(kāi)發(fā)人員面臨的常見(jiàn)問(wèn)題之一是啟動(dòng)項(xiàng)目。他們中的許多人對(duì)是否放置您的 Java 文件、資源文件等一無(wú)所知。

雖然 Maven、Gradle、 IntelliJ IDEA和 Eclipse可以幫助您提供基本結(jié)構(gòu),但您仍然需要精通這兩項(xiàng)技能才能搶占先機(jī),如果您不熟悉 Maven 或您的 IDE,那可能是一場(chǎng)噩夢(mèng)。

Spring Boot Initaizer 解決了這個(gè)問(wèn)題,讓創(chuàng)建基于 Spring 的 Java 應(yīng)用程序變得容易,而無(wú)需真正了解 Spring 框架的大量?jī)?nèi)部細(xì)節(jié)。

這就是 Java 開(kāi)發(fā)人員應(yīng)該知道的 Spring Boot 的一些基本特性。這些特性確實(shí)使使用 Java 和 Spring 變得有趣和高效,這就是為什么越來(lái)越多的公司采用 Spring Boot 進(jìn)行 Java 開(kāi)發(fā)。具有 Spring Boot 經(jīng)驗(yàn)的 Java 開(kāi)發(fā)人員也很受歡迎,如果您正在尋找作為 Java Web 開(kāi)發(fā)人員的下一份工作,那么 Spring Boot 技能真的可以發(fā)揮作用。

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2015-03-11 09:55:12

2011-07-10 15:18:11

開(kāi)發(fā)

2013-01-28 10:25:46

開(kāi)發(fā)人員設(shè)計(jì)技巧

2020-09-22 12:19:25

JavaGithub倉(cāng)庫(kù)

2009-09-10 14:18:03

PHP庫(kù)

2023-03-08 15:13:32

Git工具開(kāi)發(fā)

2010-10-27 09:33:18

MVC開(kāi)發(fā)

2012-06-13 01:37:40

JSPJava

2019-07-19 11:27:42

Java程序員技術(shù)

2022-09-12 15:51:38

JavaScrip開(kāi)發(fā)編程語(yǔ)言

2017-10-11 13:20:56

Linux命令工程師

2020-01-27 16:28:57

開(kāi)發(fā)命令遠(yuǎn)程服務(wù)器

2023-04-07 16:11:56

前端開(kāi)發(fā)

2013-01-10 10:30:36

云開(kāi)發(fā)

2017-02-24 19:10:45

C#開(kāi)發(fā)人員

2022-12-16 08:14:00

2023-10-26 16:56:24

2009-01-11 10:18:46

腳本語(yǔ)言F#Groovy

2023-01-12 08:33:06

2024-11-08 15:22:08

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)