1 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
最好 JavaBean, Spring bean 和 POJO 一起來(lái)討論
JavaBean, Spring bean 和 POJO 是三個(gè)被廣泛使用的術(shù)語(yǔ),我們來(lái)看看它們的含義,以及分析三者的區(qū)別。
JavaBeans
根本而言,JavaBean只是遵循了特定編碼規(guī)范的Java類而已。例如:
包含默認(rèn)(無(wú)參數(shù))的構(gòu)造函數(shù)
允許通過(guò)訪問(wèn)器(getter和setter方法)來(lái)訪問(wèn)類的成員屬性
實(shí)現(xiàn)java.io.Serializable接口
準(zhǔn)確來(lái)說(shuō),JavaBean是遵循了Sun制定的JavaBean 標(biāo)準(zhǔn)的類,該標(biāo)準(zhǔn)最早于1996年發(fā)布。JavaBean被定義為Java的“軟件組件模型”。最初的想法是將JavaBean打造成能夠被構(gòu)建工具可視化地操作的可重用的組件,由此,軟件供應(yīng)商可以創(chuàng)建和出售能夠讓用戶靈活地組合進(jìn)應(yīng)用程序的JavaBean。JavaBean的三個(gè)最重要的特性是:
它暴露的一系列屬性(稱之為“特征“attribute)
它允許其他組件調(diào)用的一系列方法
它觸發(fā)的一系列事件(用來(lái)通知它注冊(cè)了的監(jiān)聽(tīng)器)
POJO
POJO是 Plain Old Java Object(簡(jiǎn)單的Java對(duì)象)的縮寫。它最初是由Martin Fowler等人創(chuàng)造的,作為一種花式的對(duì)普通Java對(duì)象的稱呼。這類對(duì)象不需要通過(guò)框架來(lái)使用,也不需要在特定應(yīng)用服務(wù)器的環(huán)境下才能運(yùn)行。這個(gè)詞主要用來(lái)區(qū)分簡(jiǎn)單、輕量的Java對(duì)象和“重量級(jí)“的類,例如EJB。《POJOs in Action》一書介紹了使用這類輕量的對(duì)象來(lái)進(jìn)行開(kāi)發(fā)的方法,許多框架-例如Spring-也推廣了POJO的使用。
Spring beans
Spring bean 表示受到Spring管理的對(duì)象。具體說(shuō)來(lái),它是被Spring框架容器初始化、配置和管理的對(duì)象。Spring bean是在Spring的配置文件中定義(現(xiàn)在也可以通過(guò)annotation注解來(lái)定義),在Spring容器中初始化,然后注入到應(yīng)用程序中的。
因?yàn)樵谧钤绲陌姹局?,Spring是被設(shè)計(jì)用來(lái)管理JavaBean的,所以Spring管理的對(duì)象會(huì)被稱為“bean”。當(dāng)然,現(xiàn)在Spring已經(jīng)可以管理任何對(duì)象,即使它不具備默認(rèn)構(gòu)造器和設(shè)置方法(getter和setter)這些JavaBean的特性。然而,”Spring bean“這個(gè)術(shù)語(yǔ)仍然被保存了下來(lái)。
Spring bean可以是POJO嗎?當(dāng)然可以,并且它通常就是。(即使它并不一定得是POJO,例如Spring可以用來(lái)處理重量級(jí)Java對(duì)象,比如EJB對(duì)象)。
總結(jié)
雖然距離JavaBean規(guī)范的發(fā)表已經(jīng)過(guò)了十多年,這個(gè)規(guī)范仍然有重要的作用,并且影響著現(xiàn)代框架–如Spring–的開(kāi)發(fā)。然而,雖然我們?nèi)匀豢梢苑Q這些包含默認(rèn)構(gòu)造器和私有字段的訪問(wèn)方法的類為JavaBean,它的“可以被構(gòu)建工具可視化地管理的可重用組件”的概念已經(jīng)不再流行了。
而另一方面,POJO已經(jīng)無(wú)處不在了,人們對(duì)EJB的復(fù)雜性的積怨使得“輕量的”Java編程獲得了廣泛采用。
Spring bean是由Spring框架創(chuàng)建和管理的對(duì)象。
這三個(gè)概念并不是互斥的。一個(gè)Java對(duì)象可以同時(shí)是JavaBean,POJO和Spring bean。
- 1 回答
- 0 關(guān)注
- 507 瀏覽
添加回答
舉報(bào)