Spring Boot 備忘單
Spring Boot 備忘單
註解
Annotation | Description | Example |
---|---|---|
@SpringBootApplication | Marks a class as a Spring Boot application. Enables auto-configuration and component scanning. | @SpringBootApplication |
@RestController | Indicates that a class provides RESTful endpoints. It combines @Controller and @ResponseBody annotations. | @RestController |
@RequestMapping | Maps HTTP requests to handler methods of RESTful controllers. | @RequestMapping("/api") |
@Autowired | Injects dependencies into a Spring bean. It can be used for constructor, setter, or field injection. | @Autowired private MyService myService; |
@Component | Indicates that a class is a Spring-managed component. It is automatically detected during component scanning. | @Component |
@Repository | Marks a class as a Spring Data repository. It handles data access and persistence logic. | @Repository |
@Service | Marks a class as a service component in the business layer. It is used to separate business logic from presentation logic. | @Service |
@Configuration | Indicates that a class provides bean definitions. It is used along with @bean to define beans in Java-based configuration. | @Configuration |
@Value | Injects values from properties files or environment variables into Spring beans. | @Value("${my.property}") private String property; |
控制流程
- 初始化:Spring Boot 首先載入應用程式屬性和自動配置 bean。
- 元件掃描:Spring 掃描控制器、服務和儲存庫等元件。
- Bean 建立:Spring 建立 Bean 並使用依賴注入解析依賴關係。
- 請求處理:傳入的 HTTP 請求根據請求對應對應到控制器方法。
- 執行:控制器方法處理請求、與服務互動並回傳回應。
- 回應渲染:Spring 將方法回傳值轉換為適當的 HTTP 回應(例如 JSON)。
推薦的資料夾結構
src
├──主要
│ ├── java
│ │ └── com
│ │ └── 例子
│ │ ├── 控制器
│ │ │ └──MyController.java
│ │ ├── 服務
│ │ │ └──MyService.java
│ │ └── Application.java
│ └── 資源
│ ├── application.properties
│ └── 模板
│ └──index.html
└── 測試
└── java
└── com
└── 例子
└── 控制器
└── MyControllerTest.java
Spring Boot 備忘單的錯誤處理
錯誤處理是建立健全應用程式的關鍵方面。 Spring Boot 提供了多種優雅處理錯誤和異常的機制,確保流暢的使用者體驗。
錯誤類型
- 客戶端錯誤:無效客戶端請求導致的錯誤,例如 400 Bad Request 或 404 Not Found。
- 伺服器錯誤:伺服器端發生的錯誤,例如500內部伺服器錯誤。
- 驗證錯誤:由於輸入無效或資料驗證失敗而導致的錯誤。
錯誤處理機制
1. 控制者建議
- @ControllerAdvice:用於在 Spring MVC 中定義全域異常處理程序的註解。
- @ExceptionHandler:用於處理控制器建議中的特定例外的註解。
- 範例:
@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(MyException.class) public ResponseEntity<ErrorResponse> handleMyException(MyException ex) { ErrorResponse response = new ErrorResponse("My error message"); return new ResponseEntity<>(response, HttpStatus.BAD_REQUEST); } @ExceptionHandler(Exception.class) public ResponseEntity<ErrorResponse> handleException(Exception ex) { ErrorResponse response = new ErrorResponse("Internal server error"); return new ResponseEntity<>(response, HttpStatus.INTERNAL_SERVER_ERROR); } }
回應實體異常處理程序
- ResponseEntityExceptionHandler:處理常見 Spring MVC 異常的基底類別。
- 重寫:重寫handleMethodArgumentNotValid、handleHttpMessageNotReadable等方法
- 範例:
@ControllerAdvice public class CustomExceptionHandler extends ResponseEntityExceptionHandler { @Override protected ResponseEntity<Object> handleMethodArgumentNotValid( MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest request) { ErrorResponse response = new ErrorResponse("Validation failed"); return new ResponseEntity<>(response, HttpStatus.BAD_REQUEST); } // Other overrides for handling specific exceptions
3. 錯誤屬性
- ErrorAttributes:用於自訂錯誤回應內容和格式的介面。
- DefaultErrorAttributes:Spring Boot 提供的預設實作。
@Component public class CustomErrorAttributes extends DefaultErrorAttributes { @Override public Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) { Map<String, Object> errorAttributes = super.getErrorAttributes(webRequest, includeStackTrace); errorAttributes.put("customAttribute", "Custom value"); return errorAttributes; } }
使用屬性文件
- application.properties:儲存應用程式範圍的屬性,例如伺服器連接埠、資料庫 URL 等
- 自訂屬性檔:為不同環境定義自訂屬性檔(例如application-dev.properties)。
- 存取屬性:使用@Value註解或Spring的Environment API存取屬性。
建築工程
- Maven:執行 mvn clean install 來建置專案並產生可執行 JAR。
- Gradle:執行 ./gradlew build 來建置專案並產生可執行 JAR。
附加主題
- Spring Boot Starters:使用 starters 為專案新增依賴項和自動配置。
- 日誌記錄:使用 Logback、Log4j 或 Java Util Logging 設定日誌記錄。
- 錯誤處理:使用@ControllerAdvice實現全域異常處理。
- 測試:使用 JUnit、Mockito 和 SpringBootTest 編寫單元測試和整合測試。
以上是Spring Boot 備忘單的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Java支持異步編程的方式包括使用CompletableFuture、響應式流(如ProjectReactor)以及Java19 中的虛擬線程。 1.CompletableFuture通過鍊式調用提升代碼可讀性和維護性,支持任務編排和異常處理;2.ProjectReactor提供Mono和Flux類型實現響應式編程,具備背壓機制和豐富的操作符;3.虛擬線程減少並發成本,適用於I/O密集型任務,與傳統平台線程相比更輕量且易於擴展。每種方式均有適用場景,應根據需求選擇合適工具並避免混合模型以保持簡潔性

在Java中,枚舉(enum)適合表示固定常量集合,最佳實踐包括:1.用enum表示固定狀態或選項,提升類型安全和可讀性;2.為枚舉添加屬性和方法以增強靈活性,如定義字段、構造函數、輔助方法等;3.使用EnumMap和EnumSet提高性能和類型安全性,因其基於數組實現更高效;4.避免濫用enum,如動態值、頻繁變更或複雜邏輯場景應使用其他方式替代。正確使用enum能提升代碼質量並減少錯誤,但需注意其適用邊界。

JavaNIO是Java1.4引入的新型IOAPI,1)面向緩衝區和通道,2)包含Buffer、Channel和Selector核心組件,3)支持非阻塞模式,4)相比傳統IO更高效處理並發連接。其優勢體現在:1)非阻塞IO減少線程開銷,2)Buffer提升數據傳輸效率,3)Selector實現多路復用,4)內存映射加快文件讀寫。使用時需注意:1)Buffer的flip/clear操作易混淆,2)非阻塞下需手動處理不完整數據,3)Selector註冊需及時取消,4)NIO並非適用於所有場景。

Java的類加載機制通過ClassLoader實現,其核心工作流程分為加載、鏈接和初始化三個階段。加載階段由ClassLoader動態讀取類的字節碼並創建Class對象;鏈接包括驗證類的正確性、為靜態變量分配內存及解析符號引用;初始化則執行靜態代碼塊和靜態變量賦值。類加載採用雙親委派模型,優先委託父類加載器查找類,依次嘗試Bootstrap、Extension和ApplicationClassLoader,確保核心類庫安全且避免重複加載。開發者可自定義ClassLoader,如URLClassL

Java異常處理的關鍵在於區分checked和unchecked異常並合理使用try-catch、finally及日誌記錄。 1.checked異常如IOException需強制處理,適用於可預期的外部問題;2.unchecked異常如NullPointerException通常由程序邏輯錯誤引起,屬於運行時錯誤;3.捕獲異常時應具體明確,避免籠統捕獲Exception;4.推薦使用try-with-resources自動關閉資源,減少手動清理代碼;5.異常處理中應結合日誌框架記錄詳細信息,便於後

HashMap在Java中通過哈希表實現鍵值對存儲,其核心在於快速定位數據位置。 1.首先使用鍵的hashCode()方法生成哈希值,並通過位運算轉換為數組索引;2.不同對象可能產生相同哈希值,導致衝突,此時以鍊錶形式掛載節點,JDK8後鍊錶過長(默認長度8)則轉為紅黑樹提升效率;3.使用自定義類作鍵時必須重寫equals()和hashCode()方法;4.HashMap動態擴容,當元素數超過容量乘以負載因子(默認0.75)時,擴容並重新哈希;5.HashMap非線程安全,多線程下應使用Concu

多態是Java面向對象編程的核心特性之一,其核心在於“一個接口,多種實現”,它通過繼承、方法重寫和向上轉型實現統一接口處理不同對象的行為。 1.多態允許父類引用指向子類對象,運行時根據實際對象調用對應方法;2.實現需滿足繼承關係、方法重寫和向上轉型三個條件;3.常用於統一處理不同子類對象、集合存儲及框架設計中;4.使用時只能調用父類定義的方法,子類新增方法需向下轉型訪問,並註意類型安全。

Java枚舉不僅表示常量,還可封裝行為、攜帶數據、實現接口。 1.枚舉是類,用於定義固定實例,如星期、狀態,比字符串或整數更安全;2.可攜帶數據和方法,如通過構造函數傳值並提供訪問方法;3.可使用switch處理不同邏輯,結構清晰;4.可實現接口或抽象方法,使不同枚舉值具有差異化行為;5.注意避免濫用、硬編碼比較、依賴ordinal值,合理命名與序列化。
