<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 波多野结衣免费一区视频| 亚洲人成色777777精品| 精品久久久久久国产免费了| 免费jjzz在线播放国产| 麻豆安全免费网址入口| 国产大片91精品免费看3| 精品韩国亚洲av无码不卡区| 国产黄色片在线免费观看| 亚洲AV无码一区二区三区鸳鸯影院| 在线免费观看污网站| 国产偷国产偷亚洲高清在线| 国产又黄又爽又刺激的免费网址 | 免费观看理论片毛片| 亚洲一本到无码av中文字幕| 日韩免费高清视频网站| 免费国产a理论片| 国产亚洲一区二区精品| 99精品视频在线观看免费播放| 亚洲精品在线不卡| 嫩草影院免费观看| 一进一出60分钟免费视频| 亚洲精品国产精品乱码不卡√| 人妻丰满熟妇无码区免费 | 亚洲人成网77777亚洲色| 99久久99热精品免费观看国产| 亚洲国色天香视频| 在线观看免费精品国产| 国产免费MV大全视频网站| 中文字幕亚洲精品资源网| 成年女人免费视频播放77777| 国产精品亚洲精品爽爽| 亚洲av无码乱码国产精品fc2| 91免费国产在线观看| 国产亚洲综合视频| 亚洲AV无码久久精品蜜桃| 嫩草影院在线免费观看| A片在线免费观看| 亚洲人成网国产最新在线| 亚洲欧洲日产国码无码网站| 人成午夜免费视频在线观看| 无码AV动漫精品一区二区免费|