ssh三大框架代碼的自動生成

[quote]
爲什麼需要自動生成代碼?

作爲一個軟件公司,開發團隊非常重要,作爲一個開發團隊,人員配備、開發效率等都非常重要,但是開發效率包含很多,如:代碼質量(擴展性、重構性 等),但是這些都是建立在規範的代碼之上來進行,在一個團隊中,每個開發者都有自己的習慣方式來進行代碼的編寫,例如(ssh文件名舉例):

dao接口: 寫法一:IXXXDao, 寫法二:IXXXDAO 等等

dao實現類: 寫法一:XXXHibernateDAO,寫法二:XXXHibernateDao,寫法三:XXXDAO等等

service接口:寫法一:IXXXService,寫法二:IXXXManager等等

service實現: 寫法一:XXXServiceImpl,寫法二:XXXService,寫法三:XXXManagerImpl等等

action: 寫法一:XXXAction XXXManager等等

還有配置文件的一些注入,以及命名,會有很多種,可能這時會有很多人認爲只要function體裏面的代碼邏輯質量高,很規範的運用了面向對象的思 想,對邏輯封裝的好,性能高,這些規範不規範的有什麼問題,影響不了程序的性能,如果你是這樣想的,那麼我會對你說,你成不了氣候,永遠都是一個邊緣的開 發者, 打個比方:一個公司如果沒有良好的規章制度,你覺得這個公司好嗎? 同樣的道理,一個好的項目,沒有自己的一套編碼規範,是個好的項目嗎?

就算在項目開發前定製了規範,也有開發人員因爲自己的習慣忘記了定製的規範,按照自己的風格來進行代碼編寫,這樣久而久之,一個項目中各種風格的代 碼都有,對於ssh架構的開發人員每天都會遇到重複的代碼編寫(當然對重複的代碼有可能你會ctrl+c,ctrl+,就算是ctrl+c,ctrl+v 也需要花大量的時間做些無意義的代碼編寫,這樣降低了開發效率,同時好多開發人員對ssh也產生了牴觸,認爲自己一天到晚都在寫些沒有用的代碼,自己感到 很沮喪!


本程序的來源


jsmart

在網上search了這樣的插件,以及相關的源碼,對jsmart映象比較深,試用該插件後發現功能雖然強大(能夠生成各種框架的環境搭建,以及fck等編輯器的初始化),但是發現有很多的規則受限制:

1.每次自動生成的代碼都是一次性全部初始化生成,對於二次開發的人員來講,需要對自己想要指定的單表(數據庫表)進行生成 (bean,hbm.xml,dao.service,action)時,該插件無法做到,我想了一下,作者應該會考慮到這一點吧,因此詢問該作者後,他 說要購買企業版,能夠達到該功能

2.定製了自己的數據庫規範, 該插件對數據庫表進行了限制,如:數據庫表名不能帶有_(下劃線),字段名也不能帶有,這點我是最受不了的,不想多說了,從這點,我也就沒有繼續往下試了.


rapid-framework

經過再三的篩選,最後選擇了一個開源的框架rapid-framework,如果想要進行全新開發一個項目,又想快速的初始化項目,那麼rapid-framework


因爲本人僅限於生成自己定製的模版文件,然後自動生成,並非想自動生成整個項目,所以對該項目的部分代碼進行了解讀,並對需要使用的類提取到自己的項目中,然後對自己需要的定製作了相應的修改,完成了一個自動生成的程序.


生成代碼後的目錄結構如下:

com.bestsoft.ssh目錄下的

bean/{自定義的存放包}目錄: bean文件、hbm.xml文件

dao/{自定義的存放包}目錄:接口類

dao/hibernate/{自定義的存放包}目錄:實現類

service/{自定義的存放包}目錄:接口類

service/impl/{自定義的存放包}目錄:實現類

action/{自定義的存放包}目錄:struts2的類


conf目錄下的

{自定義的存放包}目錄:4個xml文件(applicationContext-dao.xml(dao注入配 置),applicationContext-service.xml(service注入配置),action-servlet.xml(action 注入配置),struts-{自定義的存放包名}.xml(struts2的action配置文件))


以上是根據我自己項目目錄以及代碼需要自動生成哪些內容而自己定製的,包括類中的方法等自己都可以定製.



實現技巧:

generator\template\src\conf\${subpackage}下的文件實現:

generator\template\src\conf\${subpackage}\目錄下有8個xml文件,4個配置文件中是帶有xml文件 頭信息的,4個配置文件不帶頭文件信息,也就是說這4個文件是標準的配置文件,還有4個是非標準的(文件名中帶有-insert的)。

配置文件的作用:

標準的配置文件是在第一次生成代碼的時候調用,來生成一個完整的配置文件的內容,如果說想在此配置文件的內容中增加內容,怎麼辦?

大家可以看到,標準的4個配置文件中都帶有“<!– webapp-generator-insert-location –>”這樣的註釋,該註釋的主要作用是用來在該配置文件原有內容的基礎上增加新的內容,但是這個新增加的內容從哪裏來? 這些內容就是從帶"-insert"的配置文件中來,把帶"-insert"的配置文件內容加入到不帶“insert”的配置文件中去。

generator\template\src\${basepackage_dir}目錄下的文件實現:

generator\template\src\${basepackage_dir}\bean 該目錄下文件定製bean,以及or/map文件的模板

generator\template\src\${basepackage_dir}\dao 該目錄下文件定製dao文件的模板

generator\template\src\${basepackage_dir}\service 該目錄下文件定製service文件的模板

generator\template\src\${basepackage_dir}\web\action\${subpackage} 該目錄下文件定製action文件的模板。

上述文件模板中的內容可以根據自己的需求來作相應功能的增加,修改等


generator\src目錄下的文件實現:

generator.properties文件:配置信息,大家可以看到我們的目錄或者模板文件中含有${}的符號,這些${}的內容就是在這裏進行配置的.


GeneratorMain.java(該類用來傳入一個參數:"表 名(數據庫表)",然後就會生成想要生成的模版),Generator.java(該類實現想要定製哪些模版文件來進行生成,生成後的文件存放在哪 裏),generator.properties(配置自己的數據庫信息,存放包的信息等),template目下的所有文件(該目錄下存放的是模版文 件,用來只自定義自己想要生成類,xml文件的模版內容)。

紅色部分中的類可能是你要進行修改的類,其他包的類大家一看就知道是做什麼用的.


附件是該程序的代碼,該程序只是一個demo,提供瞭解決該問題的方法,每個項目定製自動生成代碼的內容都不一樣,但是隻需要在該demo的基礎上 做相應的修改,就可以實現自己想要的內容, 如果還有不清楚的地方,可以留言給我,我會針對留言來進行回覆,因爲該demo只對ssh2做了程序自動生成,如果該demo無法滿足你更多的需要,可以 在網上搜索rapid-framework框架,來進行更多框架的代碼自動生成.



[/quote]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章