Spring框架簡介
Spring 是一個 Java 框架,它使用容器來創建和管理應用程序的不同組件。容器(通常稱為 Spring 應用程序上下文)使用依賴注入 (DI) 設計模式連接應用程序中的不同組件。DI 允許您在依賴類中使用對象,而無需在依賴類中創建它的新實例。
因此,Spring 的容器不是允許每個組件創建它們所依賴的組件的新實例,而是創建並維護它託管的每個組件的實例。然後這個容器將一個組件的實例注入到所有其他需要它的組件中。
探索 Spring 的核心特性
Spring 框架有大約 20 個組織良好的模塊,這些模塊在其創建和管理應用程序的能力中發揮著不可或缺的作用。根據這些模塊的主要特性,您可以將它們分為五類:
- 核心容器
- 數據訪問/集成
- 網絡
- 面向方面的編程和檢測
- 測試
彈簧容器
Spring 使用容器來創建和管理應用程序的不同組件(它稱為 beans)。可以通過 Spring 的 ApplicationContext 接口訪問容器,它允許您實例化、配置和組裝對象(或 bean)。由於配置元數據的幫助,Spring 的容器可以執行其功能。
這種配置元數據可以有幾種不同的形式,但它的典型形式是 XML。除了bean,Spring的容器還由核心、上下文和表達式模塊組成。
Spring 數據訪問/集成
spring 框架的數據訪問/集成方面由幾個子模塊組成:JDBC、ORM、OXM、JMS 和事務。這些模塊協同工作以管理您的應用程序使用的任何數據。
春網
Spring 應用程序的 Web 特性為您的應用程序提供了面向 Web 的集成。除了面向 web 的集成之外,Spring 還提供了一個 web servlet 模塊。Web servlet 模塊負責 Spring 的模型-視圖-控制器 (MVC) 實現。
Spring 面向切面編程 (AOP)
Spring 的 AOP 框架是它的另一個關鍵組件。儘管 AOP 框架對於 Spring 的容器功能來說並不重要,但它作為一個功能強大的中間件解決方案確實對容器進行了補充。AOP 框架的一個關鍵特性是它為您的應用程序提供聲明式企業服務,即聲明事務管理。
聲明式事務管理是一種理想的軟件開發方法,因為它對應用程序代碼的影響最小。
春季測試
Spring 非常重視應用程序測試。它的測試模塊支持使用 JUnit 或 TestNG 進行集成測試和單元測試。
創建一個 Spring 應用程序
有幾種方法可以為新的 Spring 應用程序創建樣板。各種方法包括:
- 來自 Spring 官方網站上的 Web 應用程序(或 Spring Initializr)。
- 手動創建項目目錄結構和構建規範。
- 使用 Spring 工具套件。
- 從帶有 Spring Boot 命令行界面的命令行。
- 使用 Eclipse IDE。
- 使用 IntelliJ IDEA IDE。
最流行的方法是 Spring Initializr:
從上圖中可以看出,您需要做出幾個決定。第一個是您要初始化的項目類型。Spring 提供了三個選項:Groovy 的 Gradle、Kotlin 的 Gradle 或 Maven。此示例應用程序將使用 Maven 項目。
您必須選擇的其他選項是語言 (Java)、要使用的 Spring Boot 版本和項目元數據。Spring 的五個字段中已經有一些虛擬數據,可以幫助您創建示例應用程序。但是,您將需要使用特定於項目的數據更新這些字段,因為此元數據將描述您的 Spring 應用程序,包括 Spring bean 及其方法。
接下來,您需要選擇文件的包裝方式(jar 或 war)。然後您可以選擇設備上的 Java 版本。您需要做出的最後決定是您希望應用程序依賴的類型。
Spring 提供了幾個可用於向應用程序添加屬性的依賴項。要向您的應用程序添加新的依賴項,只需單擊 Spring Initializr 右側的添加依賴項按鈕。此操作將在您的屏幕上生成以下疊加層:
對於這個示例應用程序,您唯一需要的依賴項是 Spring Web。此依賴項允許您使用 MVC 架構構建 Web 應用程序。在您選擇了您希望在您的應用程序中使用的所有依賴項之後,繼續單擊生成。這將為您下載項目樣板。
現在您有了一個 Spring Boot(它是 Spring 的庫之一)項目。最後一步是將項目導入您首選的 IDE。您的 Spring 項目將具有以下項目結構:
這是一個正常的 Maven 項目結構,其中有幾個重要文件需要您熟悉。
- Pom.xml:這包含 Spring 應用程序配置數據。
- OnlineShopaholicsApplication.java:這是執行應用程序的 Spring Boot 主類。
- OnlineShopaholicsApplicationTest.java:這是一個 JUnit 測試類,可確保正確加載 Spring 應用程序上下文(或容器)。
運行 Spring 應用程序
Spring 的引導程序類(在本例中為 OnlineShopaholicsApplication 類)具有以下初始代碼:
package com.onlineshopaholics;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class OnlineShopaholicsApplication {
public static void main(String[] args) {
SpringApplication.run(OnlineShopaholicsApplication.class, args);
}
}
上面代碼最重要的方面之一是@SpringBootApplication註釋,它是一個複合註釋,允許您的應用程序訪問其他三個註釋的功能:
- @EnableAutoconfiguration:該註解開啟Spring Boot自動配置。這意味著它告訴 Spring boot 配置它認為您的應用程序需要運行的任何組件。
- @ComponentScan:這個註解允許你啟用組件掃描。這個特性很重要,它允許 Spring 自動發現和註冊其他帶註釋的組件以供 Spring 應用程序上下文(或容器)使用。
- @SpringBootConfiguration:這是@Configureation 註釋的一種特殊形式,它允許您在Spring 應用程序上下文中註冊bean(或對象)。
上面代碼的另一個重要方面是main()方法,它執行您的應用程序。當應用程序現在執行時,它只是啟動服務器。因此,如果您想向應用程序添加更多功能,則需要更新代碼:
package com.onlineshopaholics;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class OnlineShopaholicsApplication {
public static void main(String[] args) {
SpringApplication.run(OnlineShopaholicsApplication.class, args);
}
@GetMapping("/customer")
public String Welcome(@RequestParam(value = "name", defaultValue = "Customer") String name) {
return String.format("Welcome %s!", name);
}
}
Spring Boot 應用程序現在具有三個新註釋:
- @RestController:該註解將類標記為控制器,因此上麵類中的每個方法(除了 main() 之外)都將返回域對象而不是視圖。
- @GetMapping:此註釋將 HTTP GET 請求映射到特定的標頭方法。因此,每次您在瀏覽器中創建對“/customer”的請求時,Welcome() 方法都會通過返回一個字符串值來處理該請求。
- @RequestParam:這個註解表示一個方法參數應該綁定到一個web請求參數上。
使用更新後的代碼,您的 Spring OnlineShopaholicsApplication現在有一個客戶頁面,您可以在瀏覽器中查看該頁面。執行應用程序將啟動服務器並在控制台中產生輸出。
輸出中有很多重要信息。它告訴您服務器正在運行,它告訴您初始化過程花費了多長時間,它告訴您應用程序正在哪個端口上運行(默認情況下為 8080)。因此,如果您導航到http://localhost:8080/customer,您將在瀏覽器中看到以下輸出:
現在您可以設計您的應用程序視圖
您可能會注意到項目結構中的另一個重要文件是模板文件夾。理想情況下,OnlineShopaholicsApplication類應充當控制器,處理對不同視圖的請求。因此,在一個完整的應用程序中,控制器類不應包含將顯示在其請求視圖中的文本。
相反,您需要使用 HTML 創建模板文件並將它們放在 Spring 應用程序的模板文件夾中。
發佈留言