Java(3)-POJO和Java bean的區別是什麼

marigo發表於2024-04-27

POJO(Plain Old Java Object)和 Java Bean 是兩個密切相關但有細微差別的概念,在 Java 程式設計中經常被提及。這兩者之間的主要區別在於它們的用途和設計要求
首先簡單地介紹POJO是什麼,POJO 是 "Plain Old Java Object" 的縮寫,指的是一個普通的 Java 物件,它不依賴於特定的 Java 框架,也不需要實現任何介面或繼承特定的類。

Java Bean

Java Bean 是一種特殊型別的 POJO,它遵循了更加嚴格的規範。Java Bean 是為了易於儲存、傳輸和訪問其屬性而設計的,通常用於各種 Java 技術和框架中,特別是在需要自動化處理如序列化、傳遞或透過視覺化工具操作物件的場合。
Java Bean 的要求包括:

  1. 類必須是公共的(public)
  2. 必須有一個無引數的建構函式
  3. 屬性必須透過 getter 和 setter 方法訪問
  4. 類應該是可序列化的,以便可以輕鬆地儲存和恢復其狀態

POJO

與 Java Bean 相比,POJO 的要求更加寬鬆。POJO 只是一個遵循最少的約束和依賴的普通 Java 物件。POJO 不必實現序列化介面,也不需要遵循屬性訪問的嚴格模式(getter 和 setter 方法)。POJO 的設計目的是為了簡化物件的建立和操作,使得物件的使用不依賴於 Java 的特定規範或框架。

關係與區別

  1. 所有 Java Bean 都是 POJO但不是所有 POJO 都是 Java Bean
  2. Java Bean 需要滿足更多的規範,因此在功能上更加嚴格,適用於那些需要透過工具處理或網路傳輸物件的場景
  3. POJO 更注重保持簡單和靈活性,適用於不需要額外規範的普通物件使用場景

為什麼會糾結POJO,是因為看到“SpringMVC 透過註解,讓 POJO 成為控制器,不需要繼承類或者實現介面。”這句話讓我產生了疑惑,POJO有什麼特殊之處。

對於這句話可以這麼理解:
想象你在組織一個大型派對,每位來賓在進入派對時都需要某種指示(比如哪裡取餐、哪裡是洗手間等)。在沒有 SpringMVC 的情況下,你可能需要一隊專門的接待人員(繼承特定類或實現介面的傳統控制器),他們透過特定的培訓(繼承或實現特定的框架程式碼)來指導來賓。
而在 SpringMVC 中,任何一個普通的派對來賓(POJO)都可以透過佩戴一個特殊的徽章(@Controller 註解)來充當接待人員的角色。這個徽章告訴其他來賓,佩戴它的人可以指引他們到達正確的位置。這樣,沒有必要進行特殊的培訓或穿特定的制服,普通來賓就能承擔起接待的職責。
如果專業一點的話,就是在 SpringMVC 中,@Controller 註解的使用允許開發者將一個普通的 Java 類標記為處理 HTTP 請求的控制器。這個類不需要繼承任何特定的類或實現任何介面,僅透過註解即可被 Spring 的 Dispatcher Servlet 識別為控制器。這種方式簡化了程式碼的開發,增強了程式碼的可讀性和可維護性。

相關文章