成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

加速Java應用開發4—模板加速項目開發速度

開發 后端
模板帶給我們的好處很明顯:約束+重用。通過模板我們可以把變與不變分離,重用不變,變可以交給子類/通過回調機制完成,而且還具有約束作用,防止亂寫代碼。

模板,一個我們天天使用的技術, 比如:

  • Java類就是創建Java對象實例的模板;
  • 泛型,參數化類型的模板,如List<User>;常見的如泛型DAO、泛型Service等;
  • Arrays.sort() 一個排序的模板;
  • Spring中的DAO支持設計;可參考《我對SpringDAO層支持的總結》;
  • HttpServlet設計,如service根據http method轉發給各個do開頭的方法(doGet、doPost等);
  • 還有如Struts2的ActionSupport設計,我們繼承后能自動得到如國際化、驗證的支持;
  • JSP、Velocity、Freemarker等模板頁面技術;
  • 等等。。

模板帶給我們的好處很明顯:約束+重用。通過模板我們可以把變與不變分離,重用不變,變可以交給子類/通過回調機制完成,而且還具有約束作用,防止亂寫代碼。

那我們應該利用好這個技術,加速項目的開發速度。接下來我們看看如何利用模板技術來加速我們的開發速度。

接下來,我將介紹下如何利用模板技術加速開發速度,但不會接受如何利用模板技術開發可復用的代碼;本文以IntelliJ IDEA為原型介紹:

  1. 代碼生成
  2. Live Template
  3. File and code Templates
  4. 自動代碼生成

1、代碼生成

如我們要求 i + j,可以先:

  1. int k = add(i, j);  

然后按Alt+enter自動生成相關代碼;而不是自己去敲;其會自動生成相應的變量和方法體;如圖

1、按Alt+Enter彈出如創建方法/創建本地變量的提示

 

2、可以根據生成的模板方法,修改模板參數;

 

3、還有典型的如生成構造器、getter/setter等,按Alt+Insert得到如下圖:

 

比如在生成構造器時,可以選擇相關字段,會自動生成相應的賦值操作:

 

4、Ctrl+O/Alt+Insert生成覆蓋方法;ctrl+I/Alt+Insert生成實現方法的

5、選中代碼后,Ctrl+Alt+T彈出Surround with,生成包圍代碼的的代碼,如if/else:

#p#

6、在如JSP標簽頁面中,按Ctrl+Alt+J,生成環繞的標簽:

 

 

等等。。具體可以參考jetbrains.官網的《Generating Code》部分。

2、Live Template

如果用過idea,肯定用過如輸入 psvm 然后按Tab鍵,會自動生成public static void main方法,使我們少輸入很多字符。這個功能在idea中叫做Live Template;接下來讓我們看看有哪些Live Template和如何自定義Live Template。

最常見的功能:

  1. psvm----->public static void main(String[] args) {}
  2. psfi ------->public static final int 

3、ifn   會自動生成如下圖

大家可以通過 File--->Settings---->Live Templates找到所有模板,如:

如 lazy 生成延遲初始化的代碼,inn生成if (** != null)

如fori --->for (int j = 0; j < ; j++) {}    

List list;  itli  ----> for (int i = 0; i < list.size(); i++) { Object o =  list.get(i);}

 

 

等等,這個可以去Settings里查看。

接下來我們看看如何自定義自己的Live Template:

 

 #p#

  1. 輸入“縮寫前綴”,即在代碼中輸入的前綴;
  2. 模板文本;
  3. Change:選擇在哪使用;

接下來在Java文件中,輸入test會生成 hello world;

此處看到 $END$ 這種變量,接下來解釋下:

  1. 格式是$變量名$
  2. $END$ : 表示展開模板后光標停留的位置,比如我們的test,生成模板后,光標停留在hello world 前邊;
  3. $SELECTION$ : 表示對選中的代碼應用模板;如我們定義test為:

 

此處選中“int i = 1;”,然后按Ctrl+Alt+T 彈出“Surround With” 然后輸入test前綴,自動生成:--->hello int i = 1; world 

還有如 輸入 if for等前綴 按Ctrl+Shift+Enter會自動生成 帶()和{} 的形式,非常方便。

如果想定義自己的變量,可以直接點擊在編寫模板時,模板文本右邊的:“Edit variables” 編寫:如得到返回的變量,方法名,類名等等。

大家可以參考官網的《Live Templates》。

3、File and code Templates

到此我們使用的都是代碼塊級別的模板,在工作中我們常見的還需要:

  1. 生成如Copyright頭;
  2. 生成類頭Javadoc,如用戶、時間、版本;
  3. 創建如spring配置文件,每次可能都是從別的地方復制一份;
  4. 如我們做企業項目時,都先寫一個CRUD的DAO、Service、Controller等等,但是幾乎每一個模塊都是類似的,但是我們每次可能都要重復寫一遍;

因為IDEA使用的是velocity模板,所以語法相對來說是比較靈活的,而Eclipse看了下是自創的,所以在創建時沒有IDEA靈活。

File---->Settings--->File and Code Templates 打開模板設置頁面

3.1、給Class生成Copyright頭

1、創建Include文件

  1. 首先選擇Includes標簽,然后點擊創建創建一個;
  2. 接著Name處輸入名字;
  3. Extension部分輸入擴展名;
  4. 文件正文;

此文件包含了我的copyright

#p#

2、添加到類模板中

  1. 首先選中Class;
  2. 在頁面頂部使用 @parse("Coyright.java")把剛才寫的文件包含進來

接著新建一個Java Class,在頁面的頂部會出現這個copyright;

3.3、自定義Service模板 

以KeyValueService.java為例。

  1. 首先File--->Settings---->File and Code Templates進入模板設置頁面
  2. 創建模板,如圖所示

 

  1. 點擊Templates標簽,點擊新增按鈕
  2. Name處輸入名字
  3. Extension處輸入擴展名
  4. 輸入模板正文,此處我們可以使用${NAME}和${PACKAGE_NAME}分別獲取輸入的文件名和包名
  5. 語法是velocity語法,所以很強大,按理說很復雜的需求也可以實現

3、新增Class

3.1、在包處Alt+Enter彈出新建列表,選擇Java  Class

3.2、 接著在彈出的界面中輸入 Service的前綴,并選擇Service類型:

 

4、接著類就創建好了:

  1. /** 
  2.  * Copyright (c) 2005-2012 https://github.com/zhangkaitao 
  3.  * 
  4.  * Licensed under the Apache License, Version 2.0 (the "License"); 
  5.  */ 
  6. package com.sishuok.es.maintain.keyvalue.service; 
  7.  
  8. import com.sishuok.es.common.inject.annotation.BaseComponent; 
  9. import com.sishuok.es.common.service.BaseService; 
  10. import com.sishuok.es.maintain.keyvalue.entity.HelloValue; 
  11. import com.sishuok.es.maintain.keyvalue.repository.HelloRepository; 
  12. import org.springframework.beans.factory.annotation.Autowired; 
  13. import org.springframework.stereotype.Service; 
  14.  
  15. /** 
  16.  * <p>User: Zhang Kaitao 
  17.  * <p>Date: 13-6-20 下午4:31 
  18.  * <p>Version: 1.0 
  19.  */ 
  20. @Service 
  21. public class HelloService extends BaseService<Hello, Long> { 
  22.  
  23.     @Autowired 
  24.     @BaseComponent 
  25.     private HelloRepository helloRepository; 
  26.  

非常方便。

除此之外,我們還可以定義如 jsp模板、html模板、配置文件模板等等,消除開發中的重復工作。

但是此種方式的主要缺點就是:一次只能一個文件。比如,我們生成Service時,其實DAO、Contoller等***也自動生成。 接下來就需要自動代碼生成了。

4、自動代碼生成

估計很多朋友都使用/開發過代碼生成器;其實開發一個簡單的代碼生成器花不了多長時間,核心指導思想是:變與不變分離:

  • 不變的是結構;
  • 變的是包名、類名及實體數據。

所以根據這個思想可以很容易寫一個代碼生成器,可以按照如下步驟完成:

  1. 自動生成一個模塊的DAO、Service、Controller;
  2. 根據數據庫自動生成一個模塊的Entity、DAO、Service、Controller;
  3. 自動生成一對一、一對多關系的模塊代碼;
  4. 自動生成公司中常用的代碼的模塊代碼,如樹;

目前見到的主要有這些類型的自動代碼生成。

代碼生成的模板文件可以使用純文本(即純粹的字符串替換),更高級點的可以使用如velocity這種模板語言,更加強大。

如果有朋友不會寫代碼生成器,可以先建一個Example的示例代碼,接著做復制、粘帖、修改實體名等等完成,估計30秒鐘也能出一個基本的模塊代碼。但是如果交給代碼生成器,速度更快。

比如筆者剛開發的新項目,還沒時間開發代碼生成器,就寫一個一些示例,這樣如果寫新模塊就直接復制一份改改即可,尤其樹這塊節省不少時間,點擊showcase前往查看。

代碼生成器也不是***的,如果你做過互聯網項目,不像企業應用那樣有許多的增刪改查,所以這個時候,純粹生成CRUD的代碼生成器沒有任何意義。

到此我們介紹完了模板,使用模板能提升不少開發速度,但是模板不是***的,只有發現有些代碼是由:變與不變組成,那我們就可以把不變的做成模板,變的部分通過占位符(即變量)填入。

原文鏈接:http://jinnianshilongnian.iteye.com/blog/1895481

 

責任編輯:陳四芳 來源: 開濤的博客
相關推薦

2013-07-03 09:52:13

熱部署熱替換

2013-07-01 10:07:44

JavaSpringHibernate

2012-02-08 15:06:31

ibmdw

2009-09-24 17:21:17

加速Hibernate

2009-08-21 15:40:26

Linux KerneLinux開發加速

2013-07-03 10:20:06

2017-06-14 09:00:40

容器開發人員云應用

2018-09-11 09:00:50

工具開發應用程序

2025-04-02 10:06:00

2024-06-20 09:00:31

2023-08-29 15:14:32

2025-02-03 16:24:20

2013-07-04 13:37:23

Java開發速度

2010-05-05 17:19:55

云計算

2010-02-01 09:21:49

GroovyGoogle App Gaelyk

2022-11-09 07:49:12

Records類聲明代碼

2014-07-17 14:20:23

甲骨文移動套件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品麻豆日日躁夜夜躁 | 精品中文在线 | 日本高清在线一区 | 午夜影院中文字幕 | 欧美精品一区二区三区蜜臀 | 日韩午夜电影在线观看 | 99re视频在线观看 | 亚洲淫视频| 免费观看的av毛片的网站 | 久久久婷婷 | 青青青伊人| 欧美日韩中文在线 | 午夜视频网站 | 久久久中文 | 午夜精品久久久久久久久久久久久 | 精品综合 | 欧美激情99 | 欧美日韩电影一区二区 | 日本黄色影片在线观看 | 亚洲一区二区三区在线视频 | 亚洲综合精品 | 欧美精品一区二区三区在线播放 | 亚洲成人一区二区三区 | 日韩成人精品 | 日韩在线小视频 | 男女啪啪高潮无遮挡免费动态 | 成人综合视频在线 | 亚洲一区电影 | 国产精品久久久久久久久久 | 久久久国产亚洲精品 | 日韩综合网 | 亚洲情侣视频 | 亚洲国产精品99久久久久久久久 | 亚洲色欧美另类 | 成人网视频 | 资源首页二三区 | 亚洲精品久久久 | 欧美一区二区三 | 亚洲精品不卡 | 在线观看久草 | 99精品网 |