1. 程式人生 > >Java開發人員應該知道的前5個Spring Boot特性

Java開發人員應該知道的前5個Spring Boot特性

你可能聽說過Spring Boot,它的神奇功能可以建立一個不到140個字元的Spring Web應用程式,但這究竟意味著什麼?這些功能為 Spring Boot 提供瞭如此強大的功能,並使Spring應用程式開發變得如此簡單?那麼,這就是你將在本文中學到的東西。

我們將更詳細地討論Spring Boot的自動配置,入門依賴項,Spring Boot CLI以及Actuator和Spring Initializer功能。這些功能可以消除編寫基於Spring的Java Web應用程式相關的大部分痛苦和摩擦。

但在進入細節之前,讓我們重新審視與基於Spring的Java開發相關的問題。我個人喜歡先看問題,然後在我享受解決方案之前先感受一下。請記住:努力工作後,舒適感會更好。用餐時也一樣; 當你餓的時候,你會享受更多。

Spring是 - 毫無疑問 - 一個很棒的框架,它為你做了很多事情,例如它建立了一個物件,為它們提供了依賴,並且如果Spring不存在,它會帶走你將要編寫的大量程式碼,但是作為回報,它在配置和學習方面也向您提出了很多要求。

在過去,如果你從頭開始一個全新的基於Spring的Java應用程式,你知道它不是小菜一碟。首先需要找到所需的所有依賴項,然後找到它們的相容版本。你還需要配置很多bean來啟用一些Spring魔法。

例如,如果要建立一個 基於Spring MVC的REST應用程式 ,它支援嵌入式Tomcat中的JSON格式,那麼您可以在Maven pom.xml檔案中建立至少8到10個依賴項,例如spring-core.jar, spring-mvc.jar,jackson.jar,embedded-tomcat.jar等,請注意,這是一個非常簡單的設定。

Spring Boot消除了所有這些痛苦,讓你編寫重要的程式碼,即應用程式程式碼。我之前提到的所有Spring Boot功能,例如自動配置,Starter POM或Starter依賴項,以及Spring Boot CLI,旨在簡化Spring的Java開發。

現在,讓我們進一步詳細介紹這些功能。

1.自動配置

您之前可能使用過基於Spring的Java Web應用程式,它連線到關係資料庫,例如像H2這樣的記憶體資料庫,如果是,那麼您可能知道需要將JdbcTemplate宣告為bean並且還需要配置a  DataSource,它是JDBC模板的依賴項。

在使用基於Java的配置的現代Spring應用程式中,您需要在Configuration類中新增以下兩個方法:

@Bean
<b>public</b> JdbcTemplate jdbcTempalte(DateSource ds){
   <b>return</b> <b>new</b> JdbcTempalte(ds);
}
@Bean
<b>public</b> DataSource dataSource(){
  <b>return</b> <b>new</b> EmbeddedDatabaseBuilder()
     .setType(EmbeddedDatabaseType.H2)
     .addScripts('ddl.sql', 'data.sql')
     .build();
}

對於之前在Spring有過開發的人來說,這並不是很複雜,但是如果你要重新開始,那麼可能需要數小時和數天才能解決這個問題。

但更重要的是,這是我們許多人編寫的一段程式碼,與我們的應用程式無關。我的意思是,這段程式碼並不是唯一的,每個使用JDBC的Spring應用程式都需要它。

這就是Spring Boot  AutoConfiguration  方法的用武之地。它會檢測Classpath中是否存在某個Class,然後自動為您配置它。

例如,如果已將JDBC模板新增到類路徑和H2.jar中,則Spring Boot可以自動為您配置記憶體資料庫和可以使用的JDBC模板。您無需編寫上述程式碼即可在DAO層中使用JDBC模板。

這只是一個例子。Spring Boot自動配置可以做出200多個這樣的決定,並通過檢查JAR依賴關係自動配置許多功能。例如,如果存在spring-mvc.jar,則它可以自動配置 DispatcherServlet,   InternalViewResolver  等。

如果存在JPA和Hibernate,那麼它也可以配置它,如果你有spring-security.jar,那麼它甚至可以配置基本安全性來保護你的應用程式。請記住:當涉及到安全方面自動配置時,需要深入的知識才能正確保護您的應用程式。

預設情況下,自動配置功能處於禁用狀態,您需要使用Configuration類@EnableAutoConfiguration 或  @SpringBootApplication 註釋來啟用它  。我通常會註釋Main類,我將使用嵌入式Tomcat伺服器執行它。

建議使用@SpringBootApplication Spring Boot 1.2以後的  註釋,因為它結合了其他一些註釋,使您的程式碼更具可讀性。

簡而言之,Spring Boot的自動配置功能可以節省大量工作並縮短開發時間,我強烈建議您在使用Spring Boot時使用自動配置。

2.入門POM

雖然  AutoConfiguration 消除了配置常見功能的痛苦,但Starter POM通過在專案中查詢和新增公共依賴項來消除引入依賴包的痛苦。為了構建一個簡單的基於Spring MVC的REST應用程式,它支援 Jackson 並將其執行為嵌入式容器,您至少需要以下依賴項:

  • 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依賴項即可獲得所有這些功能。

因此,您只需新增一個,而不是新增所有這些依賴項並擔心其相容版本。您還將更加自信使用經過試驗和測試的庫版本,並且將來不會出現任何不相容問題。

Start POM功能的另一個細微好處是您不需要記住或搜尋依賴項。如果要構建Web應用程式,可以新增“web”啟動器。如果您正在構建 JPA應用程式 ,則可以通過聚合Spring Boot易於記憶和使用的常見依賴項和功能來新增“JPA”啟動程式。

簡而言之,Starter POM或入門依賴項是Spring Boot的另一個非常棒的功能,它真正有助於簡化Spring應用程式開發。它就像是自動配置的近親,你會經常一起使用它們。

3. Spring Boot CLI

Spring Boot CLI是Spring Boot框架提供的命令列介面,允許您使用Groovy程式語言建立基於Spring的Web應用程式。實際上,Groovy和Spring Boot很好地相互補充。Groovy旨在使Java開發更簡單,而Spring Boot旨在使Spring應用程式開發更簡單,並且彼此的簡單性都受益。

雖然自動配置和入門依賴項是Spring Boot的一個不可或缺的功能,但Spring CLI是一個可選項。您還需要安裝Spring CLI才能使用它。

這是一個簡單的Groovy和Spring Boot CLI中的HelloWorld RESTful Web服務,它可以在不編譯的情況下執行它,如下所示:

@RestController
<b>class</b> HelloSpringBootController{
  @RequestMapping(<font>"/"</font><font>)
  def hello() {
    <b>return</b> </font><font>"Hello Spring Boot CLI"</font><font>
   }
}
</font>

您可以在嵌入式容器上執行它,它包含Spring Boot CLI,沒有web.xml,沒有配置,也沒有伺服器設定。

如果您想知道這些事情是如何工作的,例如,Groovy如何瞭解 @RestController 和  @RequestMapping 註釋,那麼讓我告訴您Spring Boot CLI利用自動配置和啟動POM功能讓您專注於只編寫應用程式程式碼。

Spring Boot CLI會檢測  @RestController 並  @RequestMapping 正在使用它,並且它知道需要將哪些啟動器依賴項新增到類路徑中才能使其工作。

一旦下載了這些依賴項系列,自動配置會自動啟動並配置使用,例如一旦spring-boot-web-starter出現在類路徑中,它會下載spring-mvc.jar然後自動配置自動配置 DispatcherServlet 並啟用Spring MVC。

整個事情看起來像魔術,但它實際上很容易做到。如果你喜歡這種開發模式,我建議你通過   Craig Walls的 Spring Boot in Action 來深入學習Spring CLI。克雷格非常瞭解這個話題。

4.Actuator

actuator 是Spring Boot的另一個很棒的功能,它允許檢視正在執行的Spring Boot應用程式中發生的事情。憑藉其自動配置的優點,檢視是否存在不知道的應用程式內部的風險以及Spring Actuator解決風險的風險。

它提供了有關在生產中執行應用程式的大量見解和指標。例如,通過使用  Actuator,您可以確切地找到在Application上下文中配置的bean,自動配置決策是什麼,哪些環境變數,系統屬性,命令列引數可用於應用程式等等。

您甚至可以獲得應用程式處理的H​​TTP請求以及各種有用的應用程式指標,例如CPU和記憶體使用情況,垃圾收集詳細資訊,Web請求和資料來源使用情況。

Spring Boot  Actuator 還提供了幾個端點來檢索這些資料,例如,您可以使用RESTful API獲取所有這些,或者您可以使用其遠端shell功能安全地進入應用程式並通過發出命令獲取所有這些資訊。

它還使用JMX MBean公開所有這些功能,這意味著您可以使用JMX客戶端(如JConsole)在執行時控制它們。

同時,您還需要保護對Actuator 端點的訪問,  因為它不僅暴露機密​​資訊,而且危險。例如,任何人都可以使用/shutdown 端點來停止您的應用程式  。

雖然,你不必擔心。與任何其他Spring應用程式一樣,您可以使用Spring Security來保護  Actuator 端點。

5. Spring Boot Initializer

Spring Initializer是Spring Boot的另一個特性,它解決了專案結構方面的問題。它是一個Web應用程式,允許您使用Java,Kotlin,Groovy或Spring Boot生成Maven或Gradle專案。

您需要提供的只是GUI中的Project MetaData,例如專案名稱,組,工件等。它還允許您從大型列表中選擇啟動器依賴項,例如Web,JPA或安全啟動器。

可以通過https://start.spring.io/訪問Spring Initializer專案    建立專案後,您可以下載Zip檔案,然後開啟到Eclipse或IntelliJ IDEA等IDE。然後,您可以編輯此示例專案以與程式碼一起使用。

根據我的經驗,許多Java和Spring開發人員面臨的一個常見問題是如何啟動專案。他們中的許多人對是否使用您的Java檔案,資原始檔等毫無頭緒。

雖然 Maven ,Gradle,   IntelliJ IDEA 和   Eclipse 有助於為您提供基本結構,但您仍然需要精通這兩項技能才能獲得先機,如果您不熟悉Maven或IDE,它可能是一個惡夢。

Spring Boot Initaizer解決了這個問題,並且可以很容易地建立一個基於Spring的Java應用程式,而無需真正瞭解Spring框架的許多內部細節。

這就是Java開發人員應該知道 的Spring Boot的一些功能 。這些功能確實使Java和Spring的工作變得有趣和高效,這就是為什麼越來越多的公司採用Spring Boot for Java開發的原因。