Spring Core Project

Spring Core

Spring Web

Spring Web MVC

  • 透過 Servlet 處理

Spring Webflux

Spring AOP

  • 可將 Security 抽出,在 Method 加上註解 @PreAuthorize("hasRole: ('admin')") 做權限控管,不需另外在各個 Module 判斷身分。

Spring Integration

MQTT

  1. dependency 加入 pom.xml
<dependency>
    <groupId>org.springframework.integration</groupId>
    <artifactId>spring-integration-mqtt</artifactId>
</dependency>
  1. 建立必要的 bean

官方文件範例

RestController

  • @RestController = @Controller + @ResponseBody
  • @RequestBody - 收到 JSON 後反序列化為物件。

OpenAPI ( Swagger-ui )

  • 加入 pom.xml
    ​​​​<dependency>
    ​​​​    <groupId>org.springdoc</groupId>
    ​​​​    <artifactId>springdoc-openapi-ui</artifactId>
    ​​​​</dependency>
    

Entity

  • Entity Class 可加上註解 @ApiModel(description = "Entity") 定義顯示於文件的物件名稱。
  • 在 Entity 的屬性加上 @Schema(required = true),可於文件內提示該項為 Required Params。

Controller

  • API Method 加上 @Operation(summary = "API 名稱", description = "API 描述") 定義顯示於文件的 API 名稱及描述。

發送 Http Request

  • Spirng 可使用 RestTemplate 使用預設值發送 Http Request,減少繁瑣的 Request 設定 ( 建立連線, 定義 Headers 等 )。
RestTemplate restTemplate = new RestTemplate();

// 回傳完整 Response Entity,可使用 getBody() 取得內容。
restTemplate.getForEntity(url, {entity.class});

// 僅回傳 Response Body
restTemplate.getForObject(url, {entity.class});

Spring Testing

Unit Testing

  • 透過 DI 完善測試,如要測試的 Unit 會透過收到變數的某一項屬性作為條件判斷,因不是依賴於 Unit 本身的內容,所以測試時只要模擬變數的屬性值即可達到符合各項條件判斷,達到專注於 Unit 的驗證。

Integration Testing

  • Spring 提供良好的環境還原能力,如測試時新增了一些資料到 DB,測試結束後會自動清除。

Spring Main Project

Spring Cloud

Spring Security