溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

發(fā)布時(shí)間:2021-10-29 17:20:40 來(lái)源:億速云 閱讀:138 作者:柒染 欄目:編程語(yǔ)言

這篇文章將為大家詳細(xì)講解有關(guān)Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

模板,一個(gè)我們天天使用的技術(shù), 比如:

  • Java類(lèi)就是創(chuàng)建Java對(duì)象實(shí)例的模板;

  • 泛型,參數(shù)化類(lèi)型的模板,如List<User>;常見(jiàn)的如泛型DAO、泛型Service等;

  • Arrays.sort() 一個(gè)排序的模板;

  • Spring中的DAO支持設(shè)計(jì);可參考《我對(duì)SpringDAO層支持的總結(jié)》;

  • HttpServlet設(shè)計(jì),如service根據(jù)http  method轉(zhuǎn)發(fā)給各個(gè)do開(kāi)頭的方法(doGet、doPost等);

  • 還有如Struts2的ActionSupport設(shè)計(jì),我們繼承后能自動(dòng)得到如國(guó)際化、驗(yàn)證的支持;

  • JSP、Velocity、Freemarker等模板頁(yè)面技術(shù);

  • 等等。。

模板帶給我們的好處很明顯:約束+重用。通過(guò)模板我們可以把變與不變分離,重用不變,變可以交給子類(lèi)/通過(guò)回調(diào)機(jī)制完成,而且還具有約束作用,防止亂寫(xiě)代碼。

那我們應(yīng)該利用好這個(gè)技術(shù),加速項(xiàng)目的開(kāi)發(fā)速度。接下來(lái)我們看看如何利用模板技術(shù)來(lái)加速我們的開(kāi)發(fā)速度。

接下來(lái),我將介紹下如何利用模板技術(shù)加速開(kāi)發(fā)速度,但不會(huì)接受如何利用模板技術(shù)開(kāi)發(fā)可復(fù)用的代碼;本文以IntelliJ  IDEA為原型介紹:

  1. 代碼生成

  2. Live Template

  3. File and code Templates

  4. 自動(dòng)代碼生成 

1、代碼生成

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

int k = add(i, j);

然后按Alt+enter自動(dòng)生成相關(guān)代碼;而不是自己去敲;其會(huì)自動(dòng)生成相應(yīng)的變量和方法體;如圖

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

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

2、可以根據(jù)生成的模板方法,修改模板參數(shù);

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

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

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

比如在生成構(gòu)造器時(shí),可以選擇相關(guān)字段,會(huì)自動(dòng)生成相應(yīng)的賦值操作:

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

4、Ctrl+O/Alt+Insert生成覆蓋方法;ctrl+I/Alt+Insert生成實(shí)現(xiàn)方法的

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

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

6、在如JSP標(biāo)簽頁(yè)面中,按Ctrl+Alt+J,生成環(huán)繞的標(biāo)簽:

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

等等。。具體可以參考jetbrains.官網(wǎng)的《Generating  Code》部分。

2、Live Template

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

最常見(jiàn)的功能:

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

  2. psfi ------->public static final int 

3、ifn   會(huì)自動(dòng)生成如下圖

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

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

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

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

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

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

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

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

等等,這個(gè)可以去Settings里查看。

接下來(lái)我們看看如何自定義自己的Live Template:

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

  1. 輸入“縮寫(xiě)前綴”,即在代碼中輸入的前綴;

  2. 模板文本;

  3. Change:選擇在哪使用;

接下來(lái)在Java文件中,輸入test會(huì)生成 hello world;

此處看到 $END$ 這種變量,接下來(lái)解釋下:

  1. 格式是$變量名$

  2. $END$ : 表示展開(kāi)模板后光標(biāo)停留的位置,比如我們的test,生成模板后,光標(biāo)停留在hello  world 前邊;

  3. $SELECTION$ : 表示對(duì)選中的代碼應(yīng)用模板;如我們定義test為:

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

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

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

如果想定義自己的變量,可以直接點(diǎn)擊在編寫(xiě)模板時(shí),模板文本右邊的:“Edit variables”  編寫(xiě):如得到返回的變量,方法名,類(lèi)名等等。

大家可以參考官網(wǎng)的《Live  Templates》。

3、File and code Templates

到此我們使用的都是代碼塊級(jí)別的模板,在工作中我們常見(jiàn)的還需要:

  1. 生成如Copyright頭;

  2. 生成類(lèi)頭Javadoc,如用戶(hù)、時(shí)間、版本;

  3. 創(chuàng)建如spring配置文件,每次可能都是從別的地方復(fù)制一份;

  4. 如我們做企業(yè)項(xiàng)目時(shí),都先寫(xiě)一個(gè)CRUD的DAO、Service、Controller等等,但是幾乎每一個(gè)模塊都是類(lèi)似的,但是我們每次可能都要重復(fù)寫(xiě)一遍;

因?yàn)镮DEA使用的是velocity模板,所以語(yǔ)法相對(duì)來(lái)說(shuō)是比較靈活的,而Eclipse看了下是自創(chuàng)的,所以在創(chuàng)建時(shí)沒(méi)有IDEA靈活。

File---->Settings--->File and Code Templates  打開(kāi)模板設(shè)置頁(yè)面

3.1、給Class生成Copyright頭

1、創(chuàng)建Include文件

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

  1. 首先選擇Includes標(biāo)簽,然后點(diǎn)擊創(chuàng)建創(chuàng)建一個(gè);

  2. 接著Name處輸入名字;

  3. Extension部分輸入擴(kuò)展名;

  4. 文件正文;

此文件包含了我的copyright

2、添加到類(lèi)模板中

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

  1. 首先選中Class;

  2. 在頁(yè)面頂部使用 @parse("Coyright.java")把剛才寫(xiě)的文件包含進(jìn)來(lái)

接著新建一個(gè)Java Class,在頁(yè)面的頂部會(huì)出現(xiàn)這個(gè)copyright;

3.3、自定義Service模板 

以KeyValueService.java為例。

  1. 首先File--->Settings---->File and Code  Templates進(jìn)入模板設(shè)置頁(yè)面

  2. 創(chuàng)建模板,如圖所示

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

  1. 點(diǎn)擊Templates標(biāo)簽,點(diǎn)擊新增按鈕

  2. Name處輸入名字

  3. Extension處輸入擴(kuò)展名

  4. 輸入模板正文,此處我們可以使用${NAME}和${PACKAGE_NAME}分別獲取輸入的文件名和包名

  5. 語(yǔ)法是velocity語(yǔ)法,所以很強(qiáng)大,按理說(shuō)很復(fù)雜的需求也可以實(shí)現(xiàn)

3、新增Class

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

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

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

Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度

4、接著類(lèi)就創(chuàng)建好了:

/**  * Copyright (c) 2005-2012 https://github.com/zhangkaitao  *  * Licensed under the Apache License, Version 2.0 (the "License");  */ package com.sishuok.es.maintain.keyvalue.service;  import com.sishuok.es.common.inject.annotation.BaseComponent; import com.sishuok.es.common.service.BaseService; import com.sishuok.es.maintain.keyvalue.entity.HelloValue; import com.sishuok.es.maintain.keyvalue.repository.HelloRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;  /**  * <p>User: Zhang Kaitao  * <p>Date: 13-6-20 下午4:31  * <p>Version: 1.0  */ @Service public class HelloService extends BaseService<Hello, Long> {      @Autowired     @BaseComponent     private HelloRepository helloRepository;  }

非常方便。

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

但是此種方式的主要缺點(diǎn)就是:一次只能一個(gè)文件。比如,我們生成Service時(shí),其實(shí)DAO、Contoller等***也自動(dòng)生成。  接下來(lái)就需要自動(dòng)代碼生成了。

4、自動(dòng)代碼生成

估計(jì)很多朋友都使用/開(kāi)發(fā)過(guò)代碼生成器;其實(shí)開(kāi)發(fā)一個(gè)簡(jiǎn)單的代碼生成器花不了多長(zhǎng)時(shí)間,核心指導(dǎo)思想是:變與不變分離:

  • 不變的是結(jié)構(gòu);

  • 變的是包名、類(lèi)名及實(shí)體數(shù)據(jù)。 

所以根據(jù)這個(gè)思想可以很容易寫(xiě)一個(gè)代碼生成器,可以按照如下步驟完成:

  1. 自動(dòng)生成一個(gè)模塊的DAO、Service、Controller;

  2. 根據(jù)數(shù)據(jù)庫(kù)自動(dòng)生成一個(gè)模塊的Entity、DAO、Service、Controller;

  3. 自動(dòng)生成一對(duì)一、一對(duì)多關(guān)系的模塊代碼;

  4. 自動(dòng)生成公司中常用的代碼的模塊代碼,如樹(shù);

目前見(jiàn)到的主要有這些類(lèi)型的自動(dòng)代碼生成。

代碼生成的模板文件可以使用純文本(即純粹的字符串替換),更高級(jí)點(diǎn)的可以使用如velocity這種模板語(yǔ)言,更加強(qiáng)大。

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

比如筆者剛開(kāi)發(fā)的新項(xiàng)目,還沒(méi)時(shí)間開(kāi)發(fā)代碼生成器,就寫(xiě)一個(gè)一些示例,這樣如果寫(xiě)新模塊就直接復(fù)制一份改改即可,尤其樹(shù)這塊節(jié)省不少時(shí)間,點(diǎn)擊showcase前往查看。

代碼生成器也不是***的,如果你做過(guò)互聯(lián)網(wǎng)項(xiàng)目,不像企業(yè)應(yīng)用那樣有許多的增刪改查,所以這個(gè)時(shí)候,純粹生成CRUD的代碼生成器沒(méi)有任何意義。

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

關(guān)于Java應(yīng)用開(kāi)發(fā)4中如何加速項(xiàng)目開(kāi)發(fā)速度就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI