公司的Java框架應(yīng)具備的通用功能
以前在學(xué)校的時(shí)候自己以為是不是每個(gè)做JAVA開(kāi)發(fā)的公司每次做項(xiàng)目的時(shí)候都要搭建一個(gè)SSH框架呢,工作之后才發(fā)現(xiàn)每個(gè)公司都有自己的一套框架,要不是在SSH基礎(chǔ)上,要不是在SSI基礎(chǔ)上進(jìn)行了符合自己公司需求的封裝,并且隨著自己公司的框架被應(yīng)用到各個(gè)實(shí)際系統(tǒng)的過(guò)程中,這個(gè)框架會(huì)越來(lái)越成熟,會(huì)使該公司的開(kāi)發(fā)效率越來(lái)越高。
根據(jù)筆者接觸過(guò)的幾個(gè)公司的框架,筆者發(fā)現(xiàn)要想實(shí)現(xiàn)高效的開(kāi)發(fā),每個(gè)公司的框架應(yīng)該具備如下的特點(diǎn):
1.具有靈活的分頁(yè)功能。
分頁(yè)功能是每個(gè)項(xiàng)目中必須要實(shí)現(xiàn)的功能,而恰恰這個(gè)功能是比較費(fèi)時(shí)費(fèi)力的,如果在框架中實(shí)現(xiàn)這一功能,將在每個(gè)項(xiàng)目中大大減少分頁(yè)的重復(fù)性工作。
2.可以方便的實(shí)現(xiàn)文件的上傳與下載、數(shù)據(jù)的導(dǎo)入和導(dǎo)出的功能。
文件的上傳于下載、數(shù)據(jù)的導(dǎo)入和導(dǎo)出在大部門項(xiàng)目中也會(huì)遇到,但是這兩個(gè)功能可能會(huì)因?yàn)轫?xiàng)目的不同導(dǎo)致實(shí)現(xiàn)上有一點(diǎn)區(qū)別,我們框架中要做的就是應(yīng)該抽出其中共有的東西,定義為抽象的東西,以便不同的項(xiàng)目、不同的需求都能很容易的實(shí)現(xiàn)該功能。
3.方便的事務(wù)管理功能。
事務(wù)管理一般來(lái)說(shuō)都定義在業(yè)務(wù)邏輯層。我們框架中應(yīng)該實(shí)現(xiàn)對(duì)業(yè)務(wù)邏輯對(duì)象事務(wù)的簡(jiǎn)單配置甚至是零配置。筆者接觸過(guò)的兩個(gè)框架中,一個(gè)需要在配置完一個(gè)業(yè)務(wù)邏輯對(duì)象時(shí),在事務(wù)管理的配置文件中加上一句簡(jiǎn)單的配置即可,另一個(gè)是框架中實(shí)現(xiàn)了幾個(gè)基本的業(yè)務(wù)邏輯對(duì)象,并對(duì)這幾個(gè)對(duì)象實(shí)現(xiàn)了事務(wù)管理的配置,開(kāi)發(fā)的時(shí)候定義的業(yè)務(wù)邏輯對(duì)象都是繼承自這幾個(gè)基本對(duì)象,也就省去了事務(wù)管理的配置。
4.具有異常處理框架。
基本上每個(gè)項(xiàng)目的異常處理都應(yīng)該可以使用公司的框架定義的異常處理框架,并不會(huì)因?yàn)轫?xiàng)目的不同而要求的異常處理也不一樣。
5.具有自己的一套頁(yè)面組件。
項(xiàng)目開(kāi)發(fā)都是團(tuán)隊(duì)的開(kāi)發(fā),要想保證每個(gè)開(kāi)發(fā)人員的界面風(fēng)格統(tǒng)一,最好的辦法就是定義一套公司自己的頁(yè)面組建。這樣既能保證開(kāi)發(fā)效率,也能做到界面的統(tǒng)一。freemark就是不錯(cuò)的選擇,其支持自定義宏,公司框架中可以定義一套自己的頁(yè)面組建宏,供開(kāi)發(fā)人員調(diào)用即可。
6.具有數(shù)據(jù)校驗(yàn)框架。
每個(gè)項(xiàng)目在數(shù)據(jù)校驗(yàn)時(shí)都可能會(huì)用到大量的正則表達(dá)式,那么在公司的框架中將這些正則表達(dá)式封裝起來(lái),提供統(tǒng)一的調(diào)用接口將是不錯(cuò)的選擇。
7.簡(jiǎn)單的實(shí)現(xiàn)菜單的配置。
一個(gè)好的框架應(yīng)該提供對(duì)菜單、二級(jí)菜單等的簡(jiǎn)單配置、管理。還是上文提到的兩個(gè)框架,一個(gè)是通過(guò)XML配置文件實(shí)現(xiàn)了對(duì)系統(tǒng)中一級(jí)菜單、二級(jí)菜單、三級(jí)菜單的管理,而另個(gè)框架要實(shí)現(xiàn)相同的需求卻要在數(shù)據(jù)庫(kù)中進(jìn)行繁瑣的配置,顯然第一個(gè)框架的實(shí)現(xiàn)方案更可取、更高效。