Java bean是個(gè)什么概念?
看到這個(gè)提問(wèn)一定要回答一下 , 因?yàn)槲以陬^條的系列文章即將開(kāi)啟Java Web部分的內(nèi)容 , 今天就以Java Bean概念作為一個(gè)切入點(diǎn) 。如果單獨(dú)描述Javabean的概念無(wú)法完成對(duì)Java Bean的立體式了解 , 我將從Java Bean的概念、規(guī)則、應(yīng)用場(chǎng)景以及擴(kuò)展應(yīng)用來(lái)全面分析它 。JavaBean是封裝了一定功能的實(shí)體 , 是Java開(kāi)發(fā)中比較常見(jiàn)的功能組件之一 。
【Javabean的用戶(hù)注冊(cè)驗(yàn)證實(shí)例,javabean】JavaBean屬于Domain Object , 同時(shí)大部分的Java Bean也屬于Plain Object 。下面把Java Bean按照定義及應(yīng)用場(chǎng)景進(jìn)行詳細(xì)描述:普通JavaBeanJavaBean如果沒(méi)有特指的情況下 , 通常就是普通JavaBean 。簡(jiǎn)單的說(shuō)JavaBean就是遵循一定編寫(xiě)規(guī)則的Java類(lèi) , JavaBean的編寫(xiě)規(guī)則通常有三點(diǎn)要求:類(lèi)的范圍限定要定義為public 。
類(lèi)的成員屬性的范圍限定不能為public(通常要進(jìn)行封裝) 。要定義一個(gè)無(wú)參的構(gòu)造器(不建議使用默認(rèn)的構(gòu)造器 , 建議顯式手寫(xiě)) 。通常JavaBean要封裝系統(tǒng)中的重要狀態(tài)及功能 , 在Web MVC開(kāi)發(fā)模式中 , JavaBean的任務(wù)就是描述Model層的應(yīng)用 ??匆幌略贛odel2結(jié)構(gòu)下的圖示:可以說(shuō)web開(kāi)發(fā)中的數(shù)據(jù)狀態(tài)和功能實(shí)現(xiàn)都由Model層(JavaBean)來(lái)進(jìn)行描述 , 我們?cè)诳匆幌翸VC結(jié)構(gòu)下的系統(tǒng)時(shí)序圖:這是Java Web處理中一個(gè)比較常見(jiàn)的時(shí)序圖 , 圖中從用戶(hù)角度出發(fā)來(lái)呈現(xiàn)一個(gè)完整的請(qǐng)求處理過(guò)程 , 其中經(jīng)歷了以下幾個(gè)重要的步驟:用戶(hù)提交數(shù)據(jù)請(qǐng)求 , 請(qǐng)求至Servlet(標(biāo)準(zhǔn)的web開(kāi)發(fā)組件 , 也可以使用攔截器等代替一部分功能 , 比如在Struts2中的應(yīng)用)系統(tǒng)驗(yàn)證數(shù)據(jù)并進(jìn)行更能分發(fā)調(diào)用業(yè)務(wù)組件完成功能 , 這部分的概念非常重要 , 是調(diào)用不是自己完成(雖然可以) , 這個(gè)業(yè)務(wù)組件通常就是指的JavaBean 。
跳轉(zhuǎn)至View層組件(可以是JSP等)提取出Model層(JavaBean)的數(shù)據(jù)以呈現(xiàn)狀態(tài)的變化一次請(qǐng)求結(jié)束通常JavaBean還要與系統(tǒng)數(shù)據(jù)庫(kù)進(jìn)行交互 , 一般情況下一個(gè)JavaBean要對(duì)應(yīng)一條存儲(chǔ)記錄 , 這時(shí)候JavaBean就需要與DAO(數(shù)據(jù)操作模式)進(jìn)行交互 , 看一下架構(gòu)圖:關(guān)于DAO的內(nèi)容我將會(huì)在以后的文章中進(jìn)行詳細(xì)描述 , 在這里大家知道它是進(jìn)行數(shù)據(jù)庫(kù)操作的映射層組件就可以了 。
企業(yè)級(jí)JavaBean(EJB)嚴(yán)格上說(shuō)企業(yè)級(jí)JavaBean和JavaBean已經(jīng)不是一個(gè)概念了 , 為了描述的完整性 , 我把這部分內(nèi)容簡(jiǎn)答描述一下 , 以后我在頭條的文章中會(huì)單獨(dú)寫(xiě)關(guān)于EJB的文章 , 到時(shí)候會(huì)給出詳細(xì)的描述 。在上一個(gè)描述JavaBean與DAO進(jìn)行溝通的結(jié)構(gòu)圖中 , 我們發(fā)現(xiàn)Model始終位于Web container(web容器)中 , 為了提高系統(tǒng)的處理能力 , EJB的概念出現(xiàn)了 。
簡(jiǎn)單的說(shuō)EJB就是為Bean單獨(dú)提供了運(yùn)行的容器 , 以解決大用戶(hù)并發(fā)訪問(wèn)帶來(lái)的壓力 , 把處理業(yè)務(wù)組件的Bean從Web容器中解放出來(lái) , 也減輕了Web容器的負(fù)擔(dān) 。我們看一下EJB的一個(gè)典型部署圖(承接上一個(gè)圖):圖中的Model層已經(jīng)從Web container中解放出來(lái)了 , 使用一個(gè)單獨(dú)的EJB container來(lái)管理 , 也可以叫“池化” 。
其實(shí)Spring的功能和EJB容器的功能是一樣的 , 只不過(guò)它更輕量級(jí)一些 。如果需要分布式部署服務(wù)器(在大型應(yīng)用中比較常見(jiàn)) , 可以使用JNDI的解決方案 , 我們看一下使用JNDI后的結(jié)構(gòu)圖:使用JNDI以及RMI完成了服務(wù)器的分布式部署 , 這種解決方案完全是基于Java自身技術(shù)來(lái)解決的 , 現(xiàn)在的分布式框架你把它剖析開(kāi)以后 , 你會(huì)發(fā)現(xiàn)都是這種結(jié)構(gòu)的擴(kuò)展和優(yōu)化 , 所以分布式開(kāi)發(fā)本身并不復(fù)雜 。
推薦閱讀
- 國(guó)內(nèi)外汽車(chē)的風(fēng)洞發(fā)展現(xiàn)狀,汽車(chē)風(fēng)洞
- 家庭用車(chē)推薦,公認(rèn)省油的幾款家用車(chē)推薦
- 諾基亞8000測(cè)評(píng),6300/8000
- dToF助力物理世界和虛擬世界的連接,dt
- 迪哥解說(shuō)我的世界,我的世界第二季441
- 尼康相機(jī)報(bào)價(jià),尼康的單反相機(jī)多少錢(qián)
- s100fs,數(shù)碼相機(jī)富士S100fs怎么樣在遼寧的報(bào)價(jià)
- 1080p手機(jī),國(guó)內(nèi)最早做1080P的手機(jī)是誰(shuí)
- 華碩筆記本那款好,我該買(mǎi)哪個(gè)型號(hào)的筆記本電腦
- 扭蛋相機(jī),手機(jī)拍照軟件的圖標(biāo)是n的有誰(shuí)知道這種軟件叫什么嗎
