# 一、安装配置
# 1.1 Default plugins
初次安装配置Featured Plugins
Java Frameworks
java常用框架,点击Customize来配置,只选择Spring相关的。
Build Tools
项目构建工具,只选择maven。
Web Development
web开发,只选择HTML、CSS、JavaScript。
Version Controls
版本控制工具,只选择Git、GitHub、Subversion。
Test Tools
测试工具,只选择JUnit。
Application Servers
服务器,只选择Tomcat
Clouds
云相关的,直接禁用Disable All
Swing
Swing图形界面开发,直接禁用Disable All
Android
安卓,直接禁用Disable All
Database Tools
数据库连接工具,启用Enable
Other Tools
其他工具,选择Terminal、UML、YAML
# 1.2 Sttings配置
初始配置Settings
白色主题
File->Settings->Appearance & Behavior->Appearance
然后设置Theme主题为Windows 10 Light主题即可设置为白色
关闭Intellij IDEA自动更新
File->Settings->Appearance & Behavior->System Settings->Updates
取消Automatically check updates for勾选 。
隐藏.idea文件夹和.iml等文件
IntelliJ IDEA项目会自动生成一个.idea文件夹和.iml文讲,看着实在是碍眼,所以对以上文件进行隐藏处理 。
File->Settings->Editor->File Types
”Ignore files and folders”一栏添加:
*.idea;*.iml;logs;
调整字体大小
File->Settings->Editor->Font
size设置为
16
文件编码设置
File->Settings->Editor->File Encodings
Global Encoding:UTF-8
Projectt Encoding:UTF-8
Default encoding for properties files:UTF-8
勾选上Transparent native-to-ascii conversion
2
3
4
- import 去掉*
File->Settings->Editor>Code Style>Java>Scheme Default>Imports
将Class count to use import with “” 由默认值改为比较大的值,如99
将Names count to use static import with “” 由默认值改为较大的值,如99
将Package to Use import with "*"删掉默认的这两个包(不管使用多少个类,只要在这个列表里都会变为 * )
自动导入所有包
File->Settings->Editor->General->Auto Import
Insert imports on paste: **ALL** 勾选 Add unambiguous imports on the fly:这个就是自动导入功能了,当你输入类名后声明就被自动导入了; 勾选 Optimize imports on fly:自动优化包导入,移除不需要的包。
1
2
3Maven配置
File->Settings->Build,Execution,Deployment->Build Tools->Maven
生成serialVersionUID
File->Settings->Editor->Inspections
勾选 Java->Serialization issues->Serializable class without ‘serialVersionUID’
1实现:将光标放到类名上按Atl+Enter键就会提示生成serialVersionUID了。
# 1.3 模板配置
# 类接口枚举注释
File->Settings->Editor->File and Code Templates
分别修改Class,Interface,Enum等注释模板,${DESCRIPTION}是自定义变量,会在创建类时请求输入,标识当前类/接口的说明。
类Class
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")
package ${PACKAGE_NAME};
#end
/**
* ${DESCRIPTION}
*
* @author ${USER}
* @date ${DATE}
* @version 1.0.0
*/
public class ${NAME} {
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
接口Interface
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")
package ${PACKAGE_NAME};
#end
/**
* ${DESCRIPTION}
*
* @author ${USER}
* @date ${DATE}
* @version 1.0.0
*/
public interface ${NAME} {
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
枚举类Enum
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")
package ${PACKAGE_NAME};
#end
/**
* ${DESCRIPTION}
*
* @author ${USER}
* @date ${DATE}
* @version 1.0.0
*/
public enum ${NAME} {
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 方法注释
File->Settings -> Editor -> Live Templates
第一步:新建自己的分组和自己的模板;
第二步:创建Live Template
说明:
Abbreviation为 *,
关联文件,java
模板如下:
*
*
*
* @date $date$ $time$
$params$
$returns$
* @author superC
*/
2
3
4
5
6
7
8
第三步:Edit variables配置变量如下:
- params参数
groovyScript("if(\"${_1}\".length() == 2) {return '';} else {def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();for(i = 0; i < params.size(); i++) {if(i==0){result+='* @param ' + params[i] + ': '}else{result+='\\r\\n' + ' * @param ' + params[i] + ': '}}; return result;}", methodParameters());
- return参数
groovyScript("def result=\"${_1}\"; if(result == \"void\"){return \"\";}else{return \"* @return {@link \"+result+\"}\";}", methodReturnType())
第四步:使用
- 在方法上面键入
/**
; - 再点击
tab
,让idea自动补充模板的内容。
# 1.4 安装插件Plugin
安装其他常用插件Plugin
插件名称 | 插件介绍 |
---|---|
GenerateAllSetter | 一键生成 getter/setter |
GenerateSerialVersionUID | 一键生成序列化ID |
POJO to JSON | 一键复制实体类为Json格式(对实体类右键 -> MakeJson) |
Properties to YAML Converter | yaml转换 |
Lombok | 简化getter/setter等 |
JRebel | 热部署 |
Free Mybatis Plugin / MyBatisCodeHelper | mybatis框架下mapper接口快速跳转对应xml文件 |
MyBatis Log Plugin / MyBatis Log Free | mybatis SQL日志 |
JRebel mybatisPlus extension | 在使用JRebel时修改mybatis-plus的mapper文件热部署生效 |
Statistic | 代码统计插件 |
Rainbow Brackets | 彩色括号 |
grep-console | Console相关的插件,背景上色 |
Power Mode II | 打字效果 |
CodeGlance2 | 把代码小地图嵌入到编辑窗口 |
translation plugin | 翻译插件 |
Alibaba Java Coding Guidelines | 阿里巴巴编码规约 |
Maven Helper | 辅助插件 |
Background Image Plus | 设置背景图。插件安装完成后重启 IDEA,点击Help -> Find Action… ,搜索 set background Image |
# 1.5 JReble+XRebel
# 概念
- JRebel:热部署。
修改完代码,点击Build按钮进行编译,即可实现不重启服务就使代码生效。
使用Idea编写SpringBoot项目,实现热部署功能有两种方式:
- 引入依赖
spring-boot-devtools
来实现springboot的自动热部署 - 使用Idea插件
Jrebel and XRebel for IntelliJ
来实现热部署
- XRebel:请求接口时进行性能监控。
例如:方法执行时间,出现的异常,SQL执行时间,输出的Log,MQ执行时间等。
# 插件安装
下载安装:
File – settings – Plugins – Jrebel and XRebel for IntelliJ
# 激活
使用 jrebel.qekang.com网址进行激活,XRebel的方式激活和JRebel的一样。
1:通过该网址生成UUID: https://www.guidgen.com/
2:jrebel.qekang.com网址 拼上 UUID
https://jrebel.qekang.com/7b42efd0-6ecf-48be-809b-291774eeb84b
3:输入一个邮箱
110@qq.com
2
3
4
5
6
7
# 1.6 IDEA 内存配置
显示IDEA 内存占比
- 在IDEA底部栏,单击右键,选择
Memory Indicator
; - 在右下角,即可显示内存占比。
修改内存上线
在顶部导航栏中找到
Help
,而后点击Edit Custom VmM Options
(自定义虚拟内存);修改
idea.vmoptions
文件:-Xms4096m -Xmx8192m -XX:ReservedCodeCacheSize=2048m
1
2
3说明:-Xms为初次内存分配;-Xmx为最大内存上限;-XX:ReservedCodeCacheSize为代码缓冲区大小;
根据自身电脑内存情况进行调整。
清理无效缓存
File
下点击Invalidate Caches
(清理无效缓存);- 而后点击
Invalidate and Rastart
即可。
# 二、IDEA快捷键
# 2.1 Ctrl相关
快捷键 | 介绍 |
---|---|
Ctrl + B | 进入光标所在的方法/变量的接口或是定义处,等效于Ctrl + 左键单击 |
Ctrl + D | 复制光标所在行或复制选择内容,并把复制内容插入光标位置下面 |
Ctrl + F | 在当前文件进行文本查找 |
Ctrl + H | 查看类的继承结构 |
Ctrl + N | 通过类名定位文件 |
Ctrl + O | 快速重写父类方法 |
Ctrl + P | 方法参数提示 |
Ctrl + Y | 删除光标所在行或删除选中的行 |
Ctrl + W | 递进式选择代码块 |
Ctrl + Z | 撤销 |
Ctrl + 1,2,3…9 | 定位到对应数值的书签位置 结合Ctrl + Shift + 1,2,3…9使用 |
Ctrl + F1 | 在光标所在的错误代码出显示错误信息 |
Ctrl + F12 | 弹出当前文件结构层,可以在弹出的层上直接输入进行筛选 |
Ctrl + Space | 基础代码补全默认在Windows系统上被输入法占用,需要进行修改,建议修改为Ctrl + 逗号 |
Ctrl + / | 注释光标所在行代码,会根据当前不同文件类型使用不同的注释符号 |
# 2.2 Alt相关
快捷键 | 介绍 |
---|---|
Alt + Q | 弹出一个提示,显示当前类的声明/上下文信息 |
Alt + Enter | 根据光标所在问题,提供快速修复选择 |
# 2.3 Shift相关
快捷键 | 介绍 |
---|---|
Shift + F3 | 在查找模式下,定位到上一个匹配处 |
Shift + F6 | 重命名 |
# 2.4 Ctrl+Alt相关
快捷键 | 介绍 |
---|---|
Ctrl + Alt + B | 在某个调用的方法名上使用会跳到具体的实现处 |
Ctrl + Alt + L | 格式化代码 可以对当前文件和整个包目录使用 |
Ctrl + Alt + M | 快速抽取方法 |
Ctrl + Alt + O | 优化导入的类和包 可以对当前文件和整个包目录使用 |
Ctrl + Alt + T | 对选中的代码弹出环绕选项弹出层 |
Ctrl + Alt + V | 快速引进变量 |
Ctrl + Alt + F7 | 寻找类或是变量被调用的地方,以弹出框的方式显示 |
Ctrl + Alt + 左方向键 | 退回到上一个操作的地方 |
Ctrl + Alt + 右方向键 | 前进到上一个操作的地方 |
# 2.5 Ctrl+Shift相关
快捷键 | 介绍 |
---|---|
Ctrl + Shift + F | 根据输入内容查找整个项目或指定目录内文件 |
Ctrl + Shift + H | 查看方法的继承结构 |
Ctrl + Shift + J | 自动将下一行合并到当前行末尾 |
Ctrl + Shift + N | 通过文件名定位打开文件/目录,打开目录需要在输入的内容后面多加一个正斜杠 |
Ctrl + Shift + R | 根据输入内容替换对应内容,范围为整个项目或指定目录内文件 |
Ctrl + Shift + U | 对选中的代码进行大/小写轮流转换 |
Ctrl + Shift + W | 递进式取消选择代码块 |
Ctrl + Shift + Z | 取消撤销 |
Ctrl + Shift + / | 代码块注释 |
Ctrl + Shift + + | 展开所有代码 |
Ctrl + Shift + - | 折叠所有代码 |
Ctrl + Shift + 1,2,3…9 | 快速添加指定数值的书签 |
Ctrl + Shift + F7 | 高亮显示所有该选中文本,按Esc高亮消失 |
Ctrl + Shift + Space | 智能代码提示 |
Ctrl + Shift + Enter | 自动结束代码,行末自动添加分号 |
# 2.6 Debug相关
快捷键 | 介绍 |
---|---|
F8 | Step Over:跳过,一行一行的向下走,如果当前行有方法不进入方法。 |
F7 | Step Into:跳入,如果当前有方法,进入方法内部。 |
Ctrl + Shift + F7 | Force Step Into :强制跳入,可以进入任何方法。 |
Shift + F8 | Step Out:跳出,从跳入的方法内退出到方法调用处。 |
# 2.7 IDEA快捷键冲突
IDEA快捷键与其他软件发生冲突解决办法如下:
- 全局搜索快捷键冲突(Ctrl +Shift+F)
Ctrl +Shift+F
也是在开发中经常用到的,但是不知道为什么按了就是不起作用,原来是和输入法的简繁体切换冲突了。
解决步骤:
打开win设置(右键任务栏左下角微软的LOGO,单击设置);
点击时间和语言,区域和语言,中文,选项;
微软拼音,选项;
点击按键;
关掉简繁体输入切换。
- 退回到下一个操作的地方(Ctrl +Alt+→)
Ctrl + Alt + →
,退回到下一个操作的地方,与windows屏幕显示横向纵向旋转发生冲突。
解决步骤:
在桌面,右键选择英特尔显卡设置;
选择选项和支持;
点击快捷键管理器
禁用快捷键。
# 三、IDEA使用
# 3.1 IDEA+Git
# 四、IDEA+Docker
# 4.1 服务器开启docker远程访问
服务器需要开通2375
端口,允许docker进行远程访问。
vim /lib/systemd/system/docker.service
修改ExecStart
这行,如下:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
重新加载配置文件
systemctl daemon-reload
重启docker服务
systemctl restart docker.service
验证是否开通
# 查看端口是否开启
netstat -nlpt
# 直接curl看是否生效
curl http://127.0.0.1:2375/info
2
3
4
# 4.2 IDEA安装Docker插件
# 安装docker插件
在Plugins中搜索docker
进行安装。安装后重启Idea。
# 配置服务器地址
File->Settings->Build,Execution,Deployment->Docker
进行如下配置。
# 4.3 win安装Docker
# 安装Docker
Install Docker Desktop on Windows | Docker Documentation (opens new window)
官方版本现在只支持4.18
以上版本下载,如果想要选择其它版本或者低版本的话一般很难下载到。
下面把所有的Docker Desktop的版本号全整理出来了。
附(BD网盘):
Docker Desktop4.X系列:链接:https://pan.baidu.com/s/1iqVSkxAjqcXxCjlbYaG2CA?pwd=nttu (opens new window) 提取码:nttu
Docker Desktop3.X系列:链接:https://pan.baidu.com/s/14gKJ-w0uTyB2d2LeW0SMCQ?pwd=ibsk (opens new window) 提取码:ibsk
Docker Desktop2.X系列:链接:https://pan.baidu.com/s/1QwAH6mXSbBRuymR3rqYfsg?pwd=dh0b (opens new window) 提取码:dh0b
下载安装包,进行默认安装。安装之后需要进行重启电脑。
Docker默认安装位置为:
C:\Program Files\Docker\Docker
docker、docker-compose命令所在位置
C:\Program Files\Docker\Docker\resources\bin\docker
C:\Program Files\Docker\Docker\resources\bin\docker-compose.exe
2
# 配置Docker Tools
File->Settings->Build,Execution,Deployment->Docker->Tools
把docker-compose-executable 设置为安装的docker-compose所在位置就行。
# 4.4 添加maven插件(暂不需要)
<properties>
<maven.docker.version>1.0.0</maven.docker.version>
<docker.image.prefix>ccc-boot</docker.image.prefix>
</properties>
<build>
<plugins>
<!-- 生成docker镜像 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${maven.docker.version}</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory></dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 4.5 运行Dockerfile
# 编写Dockerfile文件
文件所在位置:pom.xml所在路径。
Dockerfile
# 指定所创建镜像的基础镜像。该基础镜像来源于 DockerHub 注册服务器
FROM openjdk:8-jre
# 维护者
MAINTAINER superc
# 时间
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 挂载数据卷
VOLUME /app
# 复制上下文(context)目录下的xxx.jar文件到镜像的/app/app.jar,目标路径不存在会自动创建
COPY target/admin-1.0.0-RELEASE.jar /app/app.jar
# EXPOSE 功能为暴漏容器运行时的监听端口给外部,但是EXPOSE并不会使容器访问主机的端口。
EXPOSE 1004
# 创建容器时执行该命令。
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=test"]
2
3
4
5
6
7
8
9
10
11
12
13
14
说明:
- jar包的版本需随着项目的更改而更改;
- 暴漏1004端口;
- 该文件指定spring运行环境为test环境;
# 将工程打包
- 执行
mvn clean package
,进行编译打包。 - 打包后会在
target
目录下生成jar包。 - 生成jar包后,可以在本地启动服务,进行测试。
- 测试无误后进行部署。
说明:
如果不需要进行测试jar包,该步骤可以省略,在配置Dockerfile中进行打包。
# 配置Dockerfile
Edit Configurations->Docker->Dockerfile
进入配置界面点击Docker,再点击+号,添加一个Dockerfile命令。
输入Name,选择Server,选择Dockerfile文件,输入镜像tag,完成配置。
配置构建之前执行的maven命令:
clean package -U -DskipTests
# 运行
配置完成后,执行此配置。
执行成功后,可以远程docker上,查看这个镜像;如果勾选了启动容器,则查看运行的容器。
# 4.6 运行docker-compose
# 编写docker-compose文件
文件所在位置:pom.xml所在路径。
docker-compose.yml
version: '3.3'
services:
ccc-boot-admin:
restart: unless-stopped
build:
context: .
dockerfile: Dockerfile
image: ccc-boot/admin:latest
container_name: ccc-boot-admin
network_mode: host
volumes:
- /usr/local/docker/services/ccc-boot/logs:/logs:rw
2
3
4
5
6
7
8
9
10
11
12
说明:
- 指定镜像的名称为ccc-boot/admin:latest;
- 挂载日志,指定目录;
# 编写Dockerfile文件
文件所在位置:pom.xml所在路径。
Dockerfile
# 指定所创建镜像的基础镜像。该基础镜像来源于 DockerHub 注册服务器
FROM openjdk:8-jre
# 维护者
MAINTAINER superc
# 时间
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 挂载数据卷
VOLUME /app
# 复制上下文(context)目录下的xxx.jar文件到镜像的/app/app.jar,目标路径不存在会自动创建
COPY target/admin-1.0.0-RELEASE.jar /app/app.jar
# EXPOSE 功能为暴漏容器运行时的监听端口给外部,但是EXPOSE并不会使容器访问主机的端口。
EXPOSE 1004
# 创建容器时执行该命令。
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=test"]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
说明:
- jar包的版本需随着项目的更改而更改;
- 暴漏1004端口;
- 该文件指定spring运行环境为test环境;
# 将工程打包
- 执行
mvn clean package
,进行编译打包。 - 打包后会在
target
目录下生成jar包。 - 生成jar包后,可以在本地启动服务,进行测试。
- 测试无误后进行部署。
说明:
如果不需要进行测试jar包,该步骤可以省略,在配置Dockerfile中进行打包。
# 配置docker-compose
Edit Configurations->Docker->Docker-compose
进入配置界面点击Docker,再点击+号,添加一个Docker-compose命令。
输入如下完成配置:
配置构建之前执行的maven命令:
clean package -U -DskipTests
# 运行
运行如下:
说明:
当点击停止后,服务器docker容器也随之stop。
# 五、IDEA FAQ
# 5.1 IDEA不识别某些模块
Q:
使用IDEA打开项目,某些模块无法识别为Maven项目。
W:
IDEA中的.iml文件是项目标识文件,缺少了这个文件,IDEA就无法识别项目。
使用命令重新生成iml文件,打开控制台,输入命令:
mvn idea:module
# 5.2 服务启动设置Services
在微服务开发过程中,我们经常要在本地启动很多个微服务,如果一个个在application启动类去启动肯定会很麻烦,效率很低,页面很乱,下面介绍下IDEA开发工具中得Services管理管理功能。
第一步
idea -> Views -> Tool Windows -> Services
第二步
点击之后,我们会发现下面的Sidebar多了一个Services
,点击 “+” 号,选择Run Configuration Type
,最后选择SpringBoot
,IDEA就会把所有项目加进来了。
# 5.3 Error:Kotlin
IDEA启动编译报错:
Error:Kotlin: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.16.
描述:模块是用不兼容的Kotlin版本编译的。
解决:
重新编译项目,操作步骤:
Build->Rebuild Project