IntelliJ IDEA必裝插件以及SpringBoot使用小技巧合集
IntelliJ IDEA必裝插件
有不知道怎么安裝的嗎?File-->settings打開設(shè)置面板,找到plugins,輸入想要安裝的插件回車即可。

plugins面板
1.背景圖片
目前,IDEA支持設(shè)置背景圖片。這對(duì)于廣大程序員來說無疑是個(gè)好功能。整日對(duì)著枯燥的代碼實(shí)在是會(huì)讓人疲乏。要是可以設(shè)置一張美女圖片的話。。。
設(shè)置方法:
Ctrl+Shift+A(或者h(yuǎn)elp -> find action)調(diào)用彈窗后輸入Set Background Image。
在里面設(shè)定要設(shè)置為Image的圖片,透明度調(diào)到15左右,保存即可。

效果如圖:

2.Maven Helper
日常開發(fā)中,可能經(jīng)常會(huì)遇到j(luò)ar包沖突等問題,就需要通過查看maven依賴樹來查看依賴情況。這種方式不是很高效,這里推薦一個(gè)插件,安裝之后,直接打開pom文件,即可查看依賴數(shù),還能自動(dòng)分析是否存在jar包沖突。
一旦安裝了Maven Helper插件,只要打開pom文件,就可以打開該pom文件的Dependency Analyzer視圖(在文件打開之后,文件下面會(huì)多出這樣一個(gè)tab)。


進(jìn)入Dependency Analyzer視圖之后有三個(gè)查看選項(xiàng)分別是:
- Conflicts(沖突)
- All Dependencies as List(列表形式查看所有依賴)
- All Dependencies as Tree(樹結(jié)構(gòu)查看所有依賴),并且這個(gè)頁面還支持搜索。
3.FindBugs-IDEA
FindBugs很多人都并不陌生,Eclipse中有插件可以幫助查找代碼中隱藏的bug,IDEA中也有這款插件。
使用方法很簡單,就是可以對(duì)多種級(jí)別的內(nèi)容進(jìn)行finbugs。
findBugs
分析完之后會(huì)有一個(gè)視圖進(jìn)行提示,詳細(xì)的說明是哪種問題。

4.阿里巴巴代碼規(guī)約檢測
檢測JAVA代碼中存在不規(guī)范得位置然后給予提示,阿里巴巴規(guī)約插件包含三個(gè)子菜單:編碼規(guī)約掃描、關(guān)閉試試檢測功能。
阿里巴巴代碼插件
安裝好此插件即可自動(dòng)在不規(guī)范位置給與提示。
提示
5.GsonFormat
Java開發(fā)中,經(jīng)常有把json格式的內(nèi)容轉(zhuǎn)成Object的需求,比如項(xiàng)目開始時(shí),合作方給你提供了一個(gè)json格式request/response,這時(shí)候你就需要將其定義成一個(gè)Java類,GsonFormat這款插件可以實(shí)現(xiàn)該功能。
6.Lombok plugin
在Java中,我們經(jīng)常會(huì)定義很多JavaBean,這些Bean需要有g(shù)etter、setter、toString、equals和hashCode等方法。
通常情況下,我們可以使用IDEA的快捷鍵生成這些代碼,但是自動(dòng)生成的代碼后,如果bean中的屬性一旦有修改,需要重新生成,給代碼維護(hù)增加了一定的負(fù)擔(dān)。
有一款很好的插件,可以幫助開發(fā)者節(jié)省這部分工作。那就是Lombok。
只要在IDEA中安裝了該插件,只需要在JavaBean中添加一行注解代碼,插件就會(huì)自動(dòng)幫我們生成getter、setter、toString、equals和hashCode等方法。
當(dāng)然,這些方法不止在IDE中的代碼調(diào)用中需要用到,在真正線上部署的時(shí)候也需要有,所以,還需要使用maven引入一個(gè)lombok的包。
- @Data
- class Wechat {
- private String id;
- private String desc;
- }
我們?cè)赪echat類上面添加了@Data注解,插件就自動(dòng)幫我們添加了getter/setter和toString方法。
7.String Manipulation
字符串日常開發(fā)中經(jīng)常用到的,但是不同的字符串類型在不同的地方可能有一些不同的規(guī)則,比如類名要用駝峰形式、常量需要全部大寫等,有時(shí)候還需要進(jìn)行編碼解碼等。這里推薦一款強(qiáng)大的字符串轉(zhuǎn)換工具——String Manipulation。
它強(qiáng)大到什么程度,看下他的功能列表你就知道了:

安裝好插件后,選中需要處理的內(nèi)容后,按快捷鍵Alt+m,即可彈出工具功能列表。
很好很強(qiáng)大的一款字符串處理工具。
8.Mybatis plugin
目前ORM框架中,Mybatis非常受歡迎。但是,同時(shí)給很多開發(fā)帶來困擾的就是Mybatis需要很多xml的配置文件,有的時(shí)候很難去進(jìn)行修改。
這里推薦一款神器,可以讓你像編輯java代碼一樣編輯mybatis的文件。
Intellij Idea Mybatis插件主要功能:
- 提供Mapper接口與配置文件中對(duì)應(yīng)SQL的導(dǎo)航
- 編輯XML文件時(shí)自動(dòng)補(bǔ)全
- 根據(jù)Mapper接口, 使用快捷鍵生成xml文件及SQL標(biāo)簽
- ResultMap中的property支持自動(dòng)補(bǔ)全,支持級(jí)聯(lián)(屬性A.屬性B.屬性C)
- 快捷鍵生成@Param注解
- XML中編輯SQL時(shí), 括號(hào)自動(dòng)補(bǔ)全
- XML中編輯SQL時(shí), 支持參數(shù)自動(dòng)補(bǔ)全(基于@Param注解識(shí)別參數(shù))
- 自動(dòng)檢查Mapper XML文件中ID沖突
- 自動(dòng)檢查Mapper XML文件中錯(cuò)誤的屬性值
- 支持Find Usage
- 支持重構(gòu)從命名
- 支持別名
- 自動(dòng)生成ResultMap屬性


(圖源:https://www.oschina.net/p/intellij-mybatis-plugin)
但是這款插件是收費(fèi)的,但是不影響他確實(shí)是一個(gè)很實(shí)用,可以很大程度上提升開發(fā)效率的插件。讀者可以考慮使用Free Mybatis plugin(這款插件我沒用過,具體是否好用有待考證)。
9.Key promoter X
對(duì)于很多剛剛開始使用IDEA的開發(fā)者來說,最苦惱的就是不知道快捷鍵操作是什么。
使用IDEA,如果所有操作都使用鼠標(biāo),那么說明你還不是一個(gè)合格的程序員。
這里推薦一款可以進(jìn)行快捷鍵提示的插件Key promoter X。
Key Promoter X 是一個(gè)提示插件,當(dāng)你在IDEA里面使用鼠標(biāo)的時(shí)候,如果這個(gè)鼠標(biāo)操作是能夠用快捷鍵替代的,那么Key Promoter X會(huì)彈出一個(gè)提示框,告知你這個(gè)鼠標(biāo)操作可以用什么快捷鍵替代。
當(dāng)我使用鼠標(biāo)查看一個(gè)方法都被哪些類使用的時(shí)候,就會(huì)提示:

記住這個(gè)快捷鍵以后,就可以使用快捷鍵代替鼠標(biāo)啦。
10.activate-power-mode
介紹一款程序員很好的在妹子面前裝X的插件——activate-power-mode 。
安裝了這款插件之后,你寫代碼的時(shí)候,就會(huì)附加一些狂拽炫酷屌炸天的效果
11.ignore
git提交時(shí)過濾掉不需要提交的文件,很方便,有些本地文件是不需要提交到Git上的。
12.CamelCase
將不是駝峰格式的名稱,快速轉(zhuǎn)成駝峰格式,安裝好后,選中要修改的名稱,按快捷鍵shift+alt+u。
13.CodeGlance
在編輯區(qū)的右側(cè)顯示的代碼地圖。

14.Material Theme UI
這是一款主題插件,可以讓你的ide的圖標(biāo)變漂亮,配色搭配的很到位,還可以切換不同的顏色,甚至可以自定義顏色。默認(rèn)的配色就很漂亮了,如果需要修改配色,可以在工具欄中Tools->Material Theme然后修改配色等。
15.Background image Plus
這是一款可以設(shè)置idea背景圖片的插件,不但可以設(shè)置固體的圖片,還可以設(shè)置一段時(shí)間后隨機(jī)變化背景圖片,以及設(shè)置圖片的透明度等等。
16.### Rainbow Brackets
彩虹顏色的括號(hào) 看著很舒服 敲代碼效率變高

SpringBoot | 番外:使用小技巧合集
設(shè)置網(wǎng)站圖標(biāo)
原來我們?cè)谑褂胻omcat開發(fā)時(shí),設(shè)置網(wǎng)站圖片時(shí),即icon圖標(biāo)時(shí),一般都是直接替換root包下的favicon.ico替換成自己的,或者在網(wǎng)頁的頭部設(shè)置link的ref為icon然后設(shè)置其href值。而在SpringBoot中,替換圖片也是很簡單的,只需要將自定義圖片放置在靜態(tài)資源目錄下即可,即默認(rèn)有static、public、resources、/META-INF/resources或者自定義的靜態(tài)目錄下即可。
目錄結(jié)構(gòu):


允許跨域訪問
CORS是一個(gè)W3C標(biāo)準(zhǔn),全稱是”跨域資源共享”(Cross-origin resource sharing)。它允許瀏覽器向跨源(協(xié)議 + 域名 + 端口)服務(wù)器,發(fā)出XMLHttpRequest請(qǐng)求,從而克服了AJAX只能同源使用的限制。
簡單來說,跨域問題是可以通過nginx來解決的,或者通過jsonp(只支持get請(qǐng)求)來解決。而SpringBoot中也提供了配置方法。
0.利用@CrossOrigin注解,可放至在類上或者方法上。類上代表整個(gè)控制層所有的映射方法都支持跨域請(qǐng)求。
- @CrossOrigin(origins = "http://blog.lqdev.cn", maxAge = 3600)
- @RestController
- public class demoController{
- @GetMapper("/")
- public String index(){
- return "hello,CORS";
- }
- }
1.配置全局CORS配置。官網(wǎng)也有給出實(shí)例,具體如下:
- @Configuration
- public class MyConfiguration {
- @Bean
- public WebMvcConfigurer corsConfigurer() {
- return new WebMvcConfigurerAdapter() {
- @Override
- public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**").allowedOrigins("https://blog.lqdev.cn");
- }
- };
- }
- }
獨(dú)立Tomcat運(yùn)行
講解了這么久,一般上我們都是通過jar包的方式進(jìn)行啟動(dòng)的應(yīng)用的。所以部署在獨(dú)立的tomcat時(shí),需要如何解決呢?其實(shí)也簡單,只需要將項(xiàng)目打包方式修改為war包,然后修改下啟動(dòng)類配置即可。
0.修改pom打包方式為war,同時(shí)排除了內(nèi)置的tomcat。
- <packaging>war</packaging>
- <!-- 排除內(nèi)置的tomcat -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-tomcat</artifactId>
- <scope>compile</scope>
- </dependency>
- <!-- 若直接有使用servlet對(duì)象時(shí)(這是廢話,⊙﹏⊙‖∣),需要將servlet引入,本例是沒有的~ -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <scope>provided</scope>
- </dependency>
1.改造下啟動(dòng)類,使其繼承SpringBootServletInitializer,同時(shí)覆蓋configure方法。
- @SpringBootApplication
- @Slf4j
- public class ChapterApplication extends SpringBootServletInitializer{
- public static void main(String[] args) {
- SpringApplication.run(ChapterApplication.class, args);
- // new SpringApplicationBuilder().sources(ChapterApplication.class).web(false).run(args);
- //之后這里設(shè)置業(yè)務(wù)邏輯 比如掛起一個(gè)線程 或者設(shè)置一個(gè)定時(shí)任務(wù)。保證不退出
- //不然它就是一個(gè)啟動(dòng)類,啟動(dòng)后就停止了。
- log.info("jar,chapter啟動(dòng)!");
- }
- @Override
- protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
- log.info("外部tomcat,chapter啟動(dòng)!");
- return application.sources(ChapterApplication.class);
- }
- }
2.maven打包成war(mvn clean install),然后放入tomcat中,啟動(dòng)運(yùn)行即可。

其實(shí)這樣設(shè)置的話,在開發(fā)時(shí)直接運(yùn)行啟動(dòng)類也還是可以直接運(yùn)行的,方便.

啟動(dòng)不設(shè)置端口
對(duì)一些定時(shí)任務(wù)服務(wù)項(xiàng)目,其本身只是提供一個(gè)定時(shí)調(diào)度功能,不需要其他服務(wù)調(diào)用,只是去調(diào)度其他服務(wù)。像這樣的服務(wù),正常也就不需要設(shè)置端口了。這時(shí)候SpringBoot也是支持的。只需要改下啟動(dòng)方式:
new SpringApplicationBuilder().sources(ChapterApplication.class).web(false).run(args);
//之后這里設(shè)置業(yè)務(wù)邏輯 比如掛起一個(gè)線程 或者設(shè)置一個(gè)定時(shí)任務(wù)。保證不退出
//不然它就是一個(gè)啟動(dòng)類,啟動(dòng)后就停止了。
或者修改配置文件的屬性:
- spring.main.web-environment=false
看效果,是不是沒有看見端口了:

啟動(dòng)完成前進(jìn)行業(yè)務(wù)邏輯
利用CommandLineRunner或者ApplicationRunner可實(shí)現(xiàn)在SpringApplication的run()完成前執(zhí)行一些業(yè)務(wù)邏輯
0.修改啟動(dòng)類,實(shí)現(xiàn)CommandLineRunner接口,ApplicationRunner類似,只是run的入?yún)⒉煌选?/p>
- @Override
- public void run(String... args) throws Exception {
- log.info("CommandLineRunner運(yùn)行");
- }
1.運(yùn)行應(yīng)用,注意查看控制臺(tái)輸出:

當(dāng)然,直接申明一個(gè)bean也是可以的。
- @Configuration
- @Slf4j
- public class CommandLineRunnerConfig {
- @Bean
- public CommandLineRunner runner(){
- return new CommandLineRunner() {
- public void run(String... args){
- log.info("CommandLineRunner運(yùn)行2");
- }
- };
- }
- }
若多個(gè)時(shí),可設(shè)置@Order來確定執(zhí)行的順序。
動(dòng)態(tài)修改日志級(jí)別
通過org.springframework.boot.logging.LoggingSystem提供的api即可。
loggingSystem.setLogLevel(null, LogLevel.DEBUG);
如,默認(rèn)時(shí)是info模式,未修改時(shí),debug模式是不會(huì)輸出的。

動(dòng)態(tài)設(shè)置后:

熱部署
前面講了這么多章節(jié),因?yàn)楣δ芏己軉我?,所以一般上都是直接重啟服?wù)來進(jìn)行更新操作。但當(dāng)服務(wù)功能一多,啟動(dòng)速度緩慢時(shí),還是配置個(gè)熱部署比較方便。在SpringBoot中,只需要加入一個(gè)spring-boot-devtools即可。
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-devtools</artifactId>
- <optional>true</optional>
- </dependency>
- </dependencies>
題外話:這里的<optional>true</optional>是表示依賴不會(huì)傳遞,依賴了此項(xiàng)目的需要額外引入此包,若需要使用的話。
若不生效,可試著在打包工具spring-boot-maven-plugin下的configuration加入<fork>true</fork>看看,具體配置項(xiàng)如下:
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <configuration>
- <fork>true</fork>
- </configuration>
- </plugin>
自定義啟動(dòng)Banner
看煩了自帶的Banner,動(dòng)手修改一個(gè)屬于自己的Banner,提現(xiàn)的時(shí)候到了~哈哈,以下是官網(wǎng)給的配置指南:

文字形式
其實(shí),替換很簡單,只需要在classpath路徑下創(chuàng)建一個(gè)banner.txt即可。具體的一些變量官網(wǎng)也有給出,具體如下:

現(xiàn)在我們就定制一個(gè)自己的Banner。
- _ _ _ _ __ _
- | | | | | | | |/ / | |
- | |__ ___ | | | | ___ ___ | ' / ___ _ __ __ _ | |
- | '_ / _ | | | | / _ / _ | < / _ | '_ / _` | | |
- | | | | | __/ | | | | | (_) | _ | (_) | | . | (_) | | | | | | (_| | |_|
- |_| |_| ___| |_| |_| ___/ ( ) ___/ |_|_ ___/ |_| |_| __, | (_)
- |/ __/ |
- |___/
- ${AnsiColor.BRIGHT_RED}
- Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version}

題外話:手輸字符畫是不太現(xiàn)實(shí)的,大家可通過一些網(wǎng)站進(jìn)行快速生成??勺孕兴阉飨?,網(wǎng)上一搜一大把。
圖片形式
若覺得使用文字不夠酷炫,當(dāng)然也可以將圖片設(shè)置為啟動(dòng)的banner。目前支持的圖片格式有g(shù)if、png、jpg。使用也很簡單,只需要命名為banner即可。
如將頭像放入目錄中,效果如下:

當(dāng)然,若圖片是有色彩的,也是可以的,對(duì)于太復(fù)雜的圖片顯示效果就不佳了,如下。
原圖:

原圖
banner效果圖:
