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

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

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

    泥巴麒麟的BLOG

    shenAwesome@hotmail.com 縱不能,將醉做生涯,休拘束

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      195 Posts :: 2 Stories :: 80 Comments :: 0 Trackbacks
          以前曾考慮過簡化web框架,很大原因是struts的配置特麻煩,大致也做了個開始。然。。。自己清楚得很,自己畢竟不是大師,而且畢竟要掙錢糊口。客觀上沒那個條件能做出非常完美和具有通用性,并且能夠被廣泛接受的框架。至多能做出一個比較有特色的,在某個領域比較簡單的東西,就好比機械化時代后的手工刀,只能自己欣賞把玩而已。
         相比之下,對于自動代碼生成的思考,則無疑更有實用意義。在實際工作中,我們會發現做了很多重復的東西。經常粘貼代碼就說明:代碼出現了重復。我總相信:每段代碼都是獨一無二的,把代碼寫的這么重復累贅,代碼就已經不再是藝術品,我們的工作也變得乏味無趣。
         解決這個問題,我有兩個思路:若采用自己的簡化框架,則可能靈活性不夠,且也沒法與市場,與工業化的軟件環境接軌,就仿佛火器時代的劍客,這是死路。則,看看自動代碼生成的構想:
        我們所做的應用,最簡單也最常見的為針對實體對象的:create ,read ,update, delete,query(list).
        按目前我公司的struts標準框架,有:dao/bo/action(form)/jsp +資源文件和配置文件
        使用spring為配置工具,Velocity為模板引擎。
         截圖有點麻煩,這里就懶一點。大致的思路,是完整地進行對pojo的描述,然后指定相關模板,最后組織為任務組,進行批量執行代碼生成。附上spring配置,可以看出思路:
    <?xml version="1.0" encoding="GBK"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
      
    <bean id="commTask" class="com.shen.autocode.task.CommTask" abstract="true">
        
    <property name="pojo" ref="pojoDesc" />
        
    <property name="path" value="f:/test/" />
      
    </bean>
      
    <bean id="commModifer" class="com.shen.autocode.task.CommPathModifer" abstract="true" />
      
    <bean id="taskSet" class="com.shen.autocode.task.TaskSet">
        
    <property name="tasks">
          
    <list>
            
    <!-- dao/model -->
            
    <bean parent="commTask">
              
    <property name="name" value="dao" />
              
    <property name="template" value="vm/auto/dao.vm" />
              
    <property name="extend" value="#/dao/##DAO.java" />
            
    </bean>
            
    <bean parent="commTask">
              
    <property name="name" value="dao" />
              
    <property name="template" value="vm/auto/model.vm" />
              
    <property name="extend" value="#/dao/##Model.java" /> 
            
    </bean>
            
    <!-- bo -->
            
    <bean parent="commTask">
              
    <property name="name" value="bo" />
              
    <property name="template" value="vm/auto/bean.vm" />
              
    <property name="extend" value="#/domain/##Bean.java" /> 
            
    </bean>
            
    <bean parent="commTask">
              
    <property name="name" value="bo" />
              
    <property name="template" value="vm/auto/bo.vm" />
              
    <property name="extend" value="#/domain/##BO.java" /> 
            
    </bean>
            
    <!-- action c2 r1 u2 d1 q2 ,以及form,以及action的csv列表準備加權限 -->
            
    <bean parent="commTask">
              
    <property name="name" value="action" />
              
    <property name="template" value="vm/auto/action_c1.vm" />
              
    <property name="extend" value="#/action/##CreateShowAction.java" /> 
            
    </bean>
            
    <bean parent="commTask">
              
    <property name="name" value="action" />
              
    <property name="template" value="vm/auto/action_c2.vm" />
              
    <property name="extend" value="#/action/##CreateAction.java" /> 
            
    </bean>
            
    <bean parent="commTask">
              
    <property name="name" value="action" />
              
    <property name="template" value="vm/auto/action_r.vm" />
              
    <property name="extend" value="#/action/##ViewAction.java" /> 
            
    </bean>
            
    <bean parent="commTask">
              
    <property name="name" value="action" />
              
    <property name="template" value="vm/auto/action_u1.vm" />
              
    <property name="extend" value="#/action/##UpdateShowAction.java" /> 
            
    </bean>
            
    <bean parent="commTask">
              
    <property name="name" value="action" />
              
    <property name="template" value="vm/auto/action_u2.vm" />
              
    <property name="extend" value="#/action/##UpdateAction.java" /> 
            
    </bean>
            
    <bean parent="commTask">
              
    <property name="name" value="action" />
              
    <property name="template" value="vm/auto/action_d.vm" />
              
    <property name="extend" value="#/action/##DeleteAction.java" /> 
            
    </bean>
            
    <bean parent="commTask">
              
    <property name="name" value="action" />
              
    <property name="template" value="vm/auto/action_q1.vm" />
              
    <property name="extend" value="#/action/##SearchAction.java" /> 
            
    </bean>
            
    <bean parent="commTask">
              
    <property name="name" value="action" />
              
    <property name="template" value="vm/auto/action_q2.vm" />
              
    <property name="extend" value="#/action/##ListAction.java" /> 
            
    </bean>  
            
    <!-- jsp 以及資源文件-->

          
    </list>
        
    </property>
      
    </bean>

    </beans>


        以及定義pojo的配置示例

    <?xml version="1.0" encoding="GBK"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
      
    <!-- 對于實體對象的定義 -->
      
    <bean id = "pojo" class = "com.shen.autocode.entity.PojoDesc" abstract="true"/>
      
    <bean id = "field" class = "com.shen.autocode.entity.FieldDesc" abstract="true"/>
      
      
    <bean id="pojoDesc" parent="pojo">
        
    <property name="task" value="/dao/bo/action/jsp/"/>
        
    <property name="name" value="asset" />
        
    <property name="chName" value="資產" />
        
    <property name="dbName" value="T_ASSET" />
        
    <property name="fields">
          
    <list>
            
    <bean parent="field">
              
    <property name="name" value="id" />
              
    <property name="chName" value="編號" />
              
    <property name="dbName" value="ASSET_ID" />
              
    <property name="type" value="1" />
              
    <property name="length" value="0" />
            
    </bean>
            
    <bean  parent="field">
              
    <property name="name" value="name" />
              
    <property name="chName" value="名稱" />
              
    <property name="dbName" value="ASSET_Name" />
              
    <property name="type" value="0" />
              
    <property name="length" value="10" />
            
    </bean>
          
    </list>
        
    </property>
      
    </bean></beans>

    如上,加上velocity模板,一個簡單的自動生成代碼的引擎就可以運作了
        

       
    posted on 2006-03-13 14:20 泥巴麒麟 閱讀(352) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产精品无码久久久秋霞1| 日木av无码专区亚洲av毛片| 亚洲精品中文字幕无乱码麻豆| 男女午夜24式免费视频| 青青草原亚洲视频| 中文字幕在线观看免费| 亚洲综合精品香蕉久久网| xvideos永久免费入口| 亚洲天堂免费在线视频| 国产在线观看xxxx免费| 亚洲免费人成在线视频观看| 最近免费中文字幕MV在线视频3| 国产亚洲色婷婷久久99精品| 国产成人精品免费久久久久| 亚洲综合网美国十次| AV大片在线无码永久免费| 亚洲综合色丁香婷婷六月图片| 国内大片在线免费看| 国产精品亚洲专区无码不卡| 亚洲伊人久久综合中文成人网| a级毛片免费全部播放无码| 久久精品国产亚洲AV麻豆王友容| 日日麻批免费40分钟无码| 亚洲一区二区三区播放在线| 国产精品公开免费视频| 一级毛片在线免费播放| 久久精品亚洲一区二区| a毛片基地免费全部视频| 精品久久久久久亚洲综合网| 国产成人精品久久亚洲| 美丽姑娘免费观看在线观看中文版 | 免费无遮挡无码永久视频 | 国产精品亚洲综合久久| 免费国产a国产片高清| 丝袜捆绑调教视频免费区| 亚洲色图校园春色| 日韩人妻无码免费视频一区二区三区| 一二三四在线观看免费中文在线观看| 久久精品国产96精品亚洲| 日本无卡码免费一区二区三区| 毛片在线播放免费观看|