<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    項目中spring分層開發的總結

    對spring框架和開發模式進行了驗證。大家有什么問題或好的建議,請回復,大家一起討論!

    一、 項目目標及完成情況

    目標

    完成情況

    技術驗證和推廣

    完成較好。

    1. 共有7人實際參與項目開發,我們引入maven2作為構建工具,eclipse作為ide環境。大家都能在很短的時間初始化項目,并快速掌握各自需要的技術(如springspring mvc等)進行開發。

    2. 對分層開發的模式也進行了探討,證明它是可行的:可以各層并行開發,提高開發效率;而通過分層可以隔離關注點,使得各層開發人員可以只關注本層相關技術和接口,減輕開發人員負擔,提高效率。

    3. 在項目活動中碰到一些技術難點,我們將解決方案文檔化,然后項目內共享,這樣能在碰到同樣問題時快速解決。現在還是碰到問題才解決,以后需要建立預研機制,較早發現可能出現的難點,盡早解決,避免對項目進展產生影響。

    4. 平臺還處于建設階段,對項目的支持還不夠,需要形成一些通用的組件。

    過程和管理實施

    有待提高。

    1. 測試1.0版已發布,目前開發11版,完善分頁功能和采用更好的驗證方式。由于對規范開發的項目周期估計不足,加上管理上的一些問題,導致項目有所延期,需要對實際的項目開發進行量化分析,確立比較準確的人員和時間計劃。

    2. UC文檔規范和編碼規范等的引入,為項目提供了較好的支持。

    3. 在實施中比較缺乏必要的文檔支持,如設計文檔等;同時各層的接口定義也出現較多問題,導致一些開發瓶頸的出現,這都需要在正式迭代中改進。

    系統功能

    完成較好。

    1. 完成了UC文檔確定的功能點,頁面美觀,使用方便,能給用戶較好的頁面體驗。

    2. 采用較好的面向對象設計,能提供一定的可重用性和擴展性。

    二、展現層總結

    經驗與教訓

    1.         SpringMVC是一個簡潔、標準的MVC實現,結構清晰,功能強大(主要體現在對日常WEB開發中可能遇到的各種常見問題的解決方案),有一定學習曲線,但是有其它MVC框架基礎的開發人員可以較快上手;

    2.         根據業務功能盡早確定接口,接口由展現層確定,由業務層實現;

    3.         合理選擇Controller可以減少開發工作量,前提是充分理解每種Controller的處理機制及其回調方法細節,Controller的編寫更多的精力主要花在校驗、出錯處理上;

    4.         頁面工作量很大,特別是需要比較復雜javascript的頁面;

    5.         UI的流轉設計等對于Controller的編寫和業務層的接口有著很大的影響,應盡早明確,否則會產生較大的返工;

    6.         展現層開發可以與業務層同步進行,推薦確定接口后,就編寫業務層接口的mock實現,放在展現層的test包內,同時寫單獨的測試用spring配置文件;

    待解決問題

    1.         Controller是否應寫test case,本次開發未做;

    2.         如何減少校驗的工作量,對于有業務邏輯的服務端校驗如何實現,是否需要采用一些validator框架,如sunJEFvalidator組件,目前我們進行了研究,通過使用commons validator組件能夠較方便的實現validator

    三、業務層總結

    經驗與教訓:

    1.         SpringiBatis的應用還是很成功的,學習曲線比較平滑,好的框架好掌握;

    2.         比較重視測試,編寫很多測試案例,并頻繁使用maven運行所有測試,使得問題能夠及早發現,保證了各層能夠快速成功集成

    3.         對于很多問題都需要經過各層間的討論來確定;

    4.         接口由展現層定義,由業務層實現;

    5.         持久層數據模型和領域模型是有區別的,但簡單的情況下可以合二為一;

    6.         Fa?ade模式還是很有價值的;

    7.         一些開源軟件的使用需要比較小心,如iBatisnull的問題等,如果處理不當會花費較多的人力物力,需要技術較強的人對開源軟件花費一定時間進行源碼級的研究,才能找出較好的解決方案;

    8.         認識到設計的重要性,需要對前置、后置條件等進行分析;

    9.         數據類型分析簡單,造成數據庫設計對業務層產生不良影響;

    待解決問題:

    1.         溝通不夠,需要建立溝通渠道,是否可以有專門的場合和時間討論項目中的進度和問題;

    2.         計劃不明確,對于要完成哪些功能,完成到什么程度,沒有明確的定義,需要設置里程碑目標。在正式迭代開始前,要明確每次迭代的任務和目標,需要結合業務需求進行計劃;

    四、持久層總結

    經驗與教訓:

    1.  通過代碼生成工具,能夠大大提高開發效率;

    2.  工具使用者要求對ibatissql比較了解;

    3.  在使用過程中對工具進行了完善,這對正式使用工具提供了保證;

    4.  與業務層的接口,應該由業務層確定,由持久層實現,而不是由持久層決定;

    待解決問題:

    1.  持久層的測試該如何進行,才能真的有用;

    2.  一些通用功能如分頁代碼生成,還在開發中;

     

    posted on 2006-01-16 13:57 pesome 閱讀(6020) 評論(12)  編輯  收藏 所屬分類: Spring+Struts+Hibernate

    評論

    # re: 項目中spring分層開發的總結 2006-01-16 15:36 agile

    呵呵,不錯.
    對于持久層測試,建議采用嵌入式DB,象Apache的Derby.  回復  更多評論   

    # re: 項目中spring分層開發的總結 2006-01-16 23:28 pesome

    呵呵,主要不是數據庫的問題。我們的DAO采用middlegen +velocity的代碼自動生成工具完成,寫些普通的CRUD的測試代碼,基本不會錯。由于沒有業務邏輯,測試的意義就不那么大。  回復  更多評論   

    # re: 項目中spring分層開發的總結 2006-01-17 20:38 Jet Geng

    摟主可否介紹一下在項目中使用maven的經驗。謝謝了先  回復  更多評論   

    # re: 項目中spring分層開發的總結 2006-01-17 21:15 風往南吹

    你小子也不在群里發言了。。。 :)  回復  更多評論   

    # re: 項目中spring分層開發的總結 2006-01-18 09:32 pesome

    maven使用很方便的,關于maven的文章網上也能搜到。個人認為,它的亮點有三:

    1。通過pom管理jar文件,能構建本組織自己的jar repository,對所有項目進行統一支持。
    2。管理項目間的依賴,包括依賴傳遞,能比較方便的對項目進行項目級細分,如我們分為db,core,web,config等多個項目,還可以方便的按模塊添加項目。
    3。開放的插件體系,能提供各種需要,如eclipse,clover,site,package,test等

    實際使用較多的就是 mvn eclipse:eclipse,mvn package,mvn test。
    我現在也是剛開始用,感覺還是不錯的,推薦大家使用,maven網址:http://maven.apache.org  回復  更多評論   

    # re: 項目中spring分層開發的總結 2006-01-20 10:31 Frankies

    個人建議:
     1 .表現層不要用spring mvc, 改用struts。
     2.持久層改為Hibernate,因為它是不適合類型的數據庫,而且不用關心它的語法問題, ibatis則不然。  回復  更多評論   

    # re: 項目中spring分層開發的總結 2006-01-20 11:13 pesome

    呵呵,spring mvc也是很不錯的mvc框架,matt在spring live里也挺推崇的,我們用下來感覺也不錯。ibatis和hibernate各有使用的范圍,據我所知很多大型的項目采用ibatis,因為它有對sql的控制,而hibernate如果使用不當會產生較多的性能問題。感謝建議!  回復  更多評論   

    # re: 項目中spring分層開發的總結 2006-04-05 15:02 daquan

    待解決問題
    2.如何減少校驗的工作量,對于有業務邏輯的服務端校驗如何實現
    ----------------------------------
    org.springframework.validation提供了驗證框架,對一般的表單驗證和validator一樣采用配置文件,對于業務邏輯相關的驗證,我用如下做法,不知我理解的對不對。
    例如我的一個SimpleFormController

    public ModelAndView onSubmit(HttpServletRequest request,
    HttpServletResponse response, Object command,
    BindException errors) throws Exception {
    。。。。。。。。。。。。
    if (已經存在相同的email地址的用戶) {
    errors.rejectValue("fieldName", "errorCode",
    getText("error.message.key",
    new Object[] {
    var1,var2}));
    return showForm(request, response, errors);
    。。。。。。。
    -----------------------------------
    其中getText:
    public String getText(String msgKey, Object[] args) {
    return getMessageSourceAccessor().getMessage(msgKey, args);
    }

    jsp顯示錯誤信息:
    <spring:bind path="user.*">
    <c:if test="${not empty status.errorMessages}">
    <div class="error">
    <c:forEach var="error" items="${status.errorMessages}">
    <c:out value="${error}" escapeXml="false"/><br />
    </c:forEach>
    </div>
    </c:if>
    </spring:bind>  回復  更多評論   

    # re: 項目中spring分層開發的總結 2006-04-05 15:27 pesom

    呵呵,非常感謝。這個問題我們后來解決了,就是這種方式,通過springmodule支持的commonvalidator  回復  更多評論   

    # re: 項目中spring分層開發的總結 2006-04-07 15:30 null

    這個是正解http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step-Part-3.html

    public class PriceIncreaseValidator implements Validator { private int DEFAULT_MIN_PERCENTAGE = 0; private int DEFAULT_MAX_PERCENTAGE = 50; private int minPercentage = DEFAULT_MIN_PERCENTAGE; private int maxPercentage = DEFAULT_MAX_PERCENTAGE; /** Logger for this class and subclasses */ protected final Log logger = LogFactory.getLog(getClass()); public boolean supports(Class clazz) { return clazz.equals(PriceIncrease.class); } public void validate(Object obj, Errors errors) { PriceIncrease pi = (PriceIncrease) obj; if (pi == null) { errors.rejectValue("percentage", "error.not-specified", null, "Value required."); } else { logger.info("Validating with " + pi + ": " + pi.getPercentage()); if (pi.getPercentage() > maxPercentage) { errors.rejectValue("percentage", "error.too-high", new Object[] {new Integer(maxPercentage)}, "Value too high."); } if (pi.getPercentage() <= minPercentage) { errors.rejectValue("percentage", "error.too-low", new Object[] {new Integer(minPercentage)}, "Value too low."); } } } public void setMinPercentage(int i) { minPercentage = i; } public int getMinPercentage() { return minPercentage; } public void setMaxPercentage(int i) { maxPercentage = i; } public int getMaxPercentage() { return maxPercentage; }}
      回復  更多評論   

    # re: 項目中spring分層開發的總結 2007-03-23 16:45 StormSpire

    關于Ibatis 和 hibernate,一般是性能要求很高的或者使用現有的數據庫,并且設計的思想沒有按照OO原則的,用ibatis; 如果要求不高,而且是重新設計數據庫的,建議用hibernate,通過hibernate來生成表結構  回復  更多評論   

    # re: 項目中spring分層開發的總結 2007-03-26 10:34 pesome

    @StormSpire
    恩,這個也是我現在的建議。  回復  更多評論   

    <2006年1月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    導航

    統計

    公告

    主要記錄作者在學習java中的每一步足跡。除非特別說明,所有文章均為本blog作者原創,如需轉載請注明出處和原作者,如用于商業目的,需跟作者本人聯系。
    歡迎大家訪問:

    常用鏈接

    留言簿(16)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    java技術

    人間百態

    朋友們的blog

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲www在线观看| a级片免费在线播放| 久久久久国产亚洲AV麻豆| 日本免费中文字幕| 亚洲国产成a人v在线观看| 亚洲国产精品自在拍在线播放| 嫩草影院在线播放www免费观看| 一区二区亚洲精品精华液 | 国产一级淫片免费播放电影| 你是我的城池营垒免费看| 99999久久久久久亚洲| 亚洲国产精品综合久久网络| 免费能直接在线观看黄的视频 | 久久久亚洲精华液精华液精华液| 国产亚洲A∨片在线观看| 天天干在线免费视频| 久久精品免费视频观看| 九九免费观看全部免费视频| 亚洲1区1区3区4区产品乱码芒果 | 亚洲av无码国产精品夜色午夜 | 中文字幕在线免费播放| 亚洲av永久无码精品秋霞电影秋 | 国产亚洲综合网曝门系列| 日本一道在线日本一道高清不卡免费| 日本黄色动图免费在线观看| 色屁屁www影院免费观看视频| 亚洲导航深夜福利| 亚洲αv久久久噜噜噜噜噜| 全部免费毛片在线| 最近最新的免费中文字幕| 中文字幕免费观看| 精品视频在线免费观看| 羞羞视频免费网站含羞草| 97se亚洲国产综合自在线 | 国产午夜精品久久久久免费视| 美女露隐私全部免费直播| 亚洲va久久久久| 亚洲人成黄网在线观看| 91精品国产亚洲爽啪在线影院| 亚洲人成网站在线播放vr| 亚洲高清无码专区视频|