什么是JavaBean:
JavaBean是一種JAVA語言寫的可重用組件。JavaBean符合一定規范寫的Java類,是一種規范。它的方法命名,構造以及行為必須符合特定的要求:
1.所有屬性為private
1.所有屬性為private
2.這個類必須具有一個公共的(public)無參構造函數
3.private屬性必須提供public的getter和setter來給外部訪問,並且方法的命名也必須遵循一定的命名規范
4.這個類是可序列化的,要實現serializable接口
JavaBean,類必須是具體的和公共的,並且具有無參數的構造器。JavaBean 通過提供符合一致性設計模式的公共方法將內部域暴露成員屬性。眾所周知,屬性名稱符合這種模式,其他Java 類可以通過自身機制發現和操作這些JavaBean 的屬性。
什么是SpringBean:
SpringBean是受Spring管理的對象 所有能受Spring容器管理的對象都可以成為SpringBean。Spring中的bean,是通過配置文件、javaconfig等的設置,有Spring自動實例化,用完后自動銷毀的對象。讓我們只需要在用的時候使用對象就可以,不用考慮如果創建類對象(這就是spring的注入)。
二者之間的區別:
用處不同:
傳統javabean更多地作為值傳遞參數,而spring中的bean用處幾乎無處不在,任何組件都可以被稱為bean。
寫法不同:
傳統javabean作為值對象,要求每個屬性都提供getter和setter方法;但spring中的bean只需為接受設值注入的屬性提供setter方法。
生命周期不同:
傳統javabean作為值對象傳遞,不接受任何容器管理其生命周期;spring中的bean有spring管理其生命周期行為。
拓展:
VO:(View Object表示層對象)
主要體現在視圖的對象,對於一個WEB頁面將整個頁面的屬性封裝成一個對象。然后用一個VO對象在控制層與視圖層進行傳輸交換。
DTO:(Data Transfer Object數據傳輸對象)
主要用於遠程調用等需要大量傳輸對象的地方。
比如我們一張表有100個字段,那么對應的PO就有100個屬性。
但是我們界面上只要顯示10個字段,
客戶端用WEB service來獲取數據,沒有必要把整個PO對象傳遞到客戶端,
這時我們就可以用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構.到達客戶端以后,如果用這個對象來對應界面顯示,那此時它的身份就轉為VO。
主要體現在視圖的對象,對於一個WEB頁面將整個頁面的屬性封裝成一個對象。然后用一個VO對象在控制層與視圖層進行傳輸交換。
DTO:(Data Transfer Object數據傳輸對象)
主要用於遠程調用等需要大量傳輸對象的地方。
比如我們一張表有100個字段,那么對應的PO就有100個屬性。
但是我們界面上只要顯示10個字段,
客戶端用WEB service來獲取數據,沒有必要把整個PO對象傳遞到客戶端,
這時我們就可以用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構.到達客戶端以后,如果用這個對象來對應界面顯示,那此時它的身份就轉為VO。
PO(Persistent Object持久化對象)
持久化對象,它跟數據表形成一一對應的映射關系。一般在Dao層使用。如果持久層是關系型數據庫,那么,數據表中的每個字段(或若干個)就對應PO的一個(或若干個)屬性。
DO:(
Domain Object領域對象)
就是從現實世界中抽象出來的有形或無形的業務實體。
POJO:(Plain Ordinary Java Object無規則簡單Java對象,POJO是一種概念或者接口,身份及作用隨環境變化而變化)
POJO 實質上可以理解為簡單的實體類,其中有一些屬性(private)及其getter和setter方法的類,沒有業務邏輯,也不允許有業務方法,也不能攜帶有connection之類的方法。POJO 是 JavaEE 世界里面最靈活的對象。
即POJO是一個簡單的普通的Java對象,它不包含業務邏輯或持久邏輯等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不繼承或不實現任何其它 Java框架的類或接口。
POJO對象有時也被稱為Data對象,大量應用於表現現實中的對象。
一個POJO持久化以后就是PO。
直接用它傳遞、傳遞過程中就是DTO
直接用來對應表示層就是VO
即POJO是一個簡單的普通的Java對象,它不包含業務邏輯或持久邏輯等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不繼承或不實現任何其它 Java框架的類或接口。
POJO對象有時也被稱為Data對象,大量應用於表現現實中的對象。
一個POJO持久化以后就是PO。
直接用它傳遞、傳遞過程中就是DTO
直接用來對應表示層就是VO
具體流程:
用戶發出請求(可能是填寫表單),表單的數據在展示層被匹配為VO。
展示層把VO轉換為服務層對應方法所要求的DTO,傳送給服務層。
服務層首先根據DTO的數據構造(或重建)一個DO,調用DO的業務方法完成具體業務。
服務層把DO轉換為持久層對應的PO(可以使用ORM工具,也可以不用),調用持久層的持久化方法,把PO傳遞給它,完成持久化操作。
對於一個逆向操作,如讀取數據,也是用類似的方式轉換和傳遞,略。
拓展二:
EJB (Enterprise Java Beans) 是基於分布式事務處理的企業級應用程序的組件。Sun公司發布的文檔中對EJB的定義是:EJB是用於開發和部署多層結構的、分布式的、面向對象的Java應用系統的跨平台的構件體系結構。EJB到底是什么?,變成大白話就是,"把你編寫的軟件中那些需要執行制定的任務的類,不放到客戶端軟件上了,而是給他打成包放到一個服務器上了"。
推薦文章:https://blog.csdn.net/jojo52013145/article/details/5783677