<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 泥巴麒麟 閱讀(353) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 成年人性生活免费视频| 日本XXX黄区免费看| 亚洲国产a级视频| 蜜芽亚洲av无码一区二区三区| 青青青国产在线观看免费| 78成人精品电影在线播放日韩精品电影一区亚洲 | 免费视频一区二区| 久久亚洲精品视频| 69影院毛片免费观看视频在线| 亚洲综合伊人久久综合| 最近的2019免费中文字幕| 亚洲天天在线日亚洲洲精| 久视频精品免费观看99| 亚洲一区二区三区亚瑟| 午夜精品在线免费观看| 黄色网页免费观看| 国产自偷亚洲精品页65页| a级毛片100部免费观看| 亚洲黄色在线播放| 毛片免费视频播放| 黄色a三级免费看| 亚洲国产三级在线观看| 91久久青青草原线免费| 亚洲综合精品伊人久久| 无码人妻一区二区三区免费n鬼沢 无码人妻一区二区三区免费看 | 51在线视频免费观看视频| 亚洲an日韩专区在线| 日本一线a视频免费观看| 一级毛片在播放免费| 亚洲第一福利视频| 女人18毛片免费观看| www永久免费视频| 亚洲国产韩国一区二区| 国产免费牲交视频| 亚洲一区二区三区写真| 亚洲国产精品成人AV无码久久综合影院 | 精品久久久久久久免费加勒比| 一级做a爱过程免费视频高清| 亚洲日本在线观看| 大胆亚洲人体视频| 在线观看免费视频资源|