文章目录
一、文章背景
优秀的开发工具已经项目管理工具可以很方便的开发流程有序、减轻开发过程中遇到的多人协同开发产生的冲突等问题。也可以让刚入职的小伙伴快速搭建Java环境,不用一篇一篇文章的找教程。
二、环境/开发工具
(1)安装Docker
1.进入docker官网下载docker
找到对应的系统下载版本并点击下载
2.下载完毕之后,双击安装包进⾏安装即可
(2)配置 Docker 阿里镜像加速器
阿里镜像加速器
Docker Toolbox
1.打开docker
2.Settings
3.Docker Engine
4.在 json 文本中添加以下列(要符合json规范)
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"features": {
"buildkit": true
},
"registry-mirrors": [
"https://p9yals3y.mirror.aliyuncs.com"
]
}
(3)使用docker运行Mysql 8
mkdir -p /data/docker/mysql/{data,logs,conf}
# 复制配置文件到 conf 下,并修改所有者或者权限
docker run --name=mysql_dev_8 --restart=always \
-e MYSQL_ROOT_PASSWORD=root \
-e MYSQL_DATABASE=mysql_dev \
-e TZ=Asia/Shanghai \
-v mysql_dev_data_8:/var/lib/mysql \
-v mysql_dev_logs_8:/logs \
-v mysql_dev_conf_8:/etc/mysql/conf.d \
-d -p3306:3306 mysql:8 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
注意:需要格式化成一句代码
(4)使用Docker运行Redis
docker run --name redis_dev --restart=always -d -p6379:6379 redis:latest redis-server --requirepass redis_dev
修改配置文件
-
远程连接redis
注释 bind 127.0.0.1
修改 protected-mode yes 为 protected-mode no -
设置密码
添加 requirepass yourpassword -
启动命令
mkdir -p /data/docker/redis/{data,conf}
#复制配置文件到 conf 下,并修改所有者或者权限
docker run -d --name redis --restart=always --privileged=true \
-p 6379:6379 \
-v /data/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /data/docker/redis/data:/data \
redis:5.0.7 \
redis-server /etc/redis/redis.conf \
--appendonly yes
注意:下载Windows Powershell更方便
(5)数据库管理工具
1.Navicat可以连接多种数据库,如:mysql、sqlServer、oracle等
缺点:
该工具需要购买,试用期为14天
优点:
他可对开发环境和测试或者生产环境的数据库数据、结构进行同步
可以做数据模型设计并直接生成表结构
IDEA自带数据库工具
可视化并没有前者好,对于初学者没那么友好。
2.Another Redis Desktop Manager、RedisDesktopManager都是对redis数据库进行管理,前者ui界面更美观。
(6)接口测试工具
1.Swagger(接口文档)
当下最流行的 API 框架,接口文档在线生成,避免同步的麻烦,可以支持在线对接口执行测试。
1.在pom.xml文件中引入jar包(具体的版本根据自己的项目而定,我用的是swagger2x)
<!-- swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
<exclusions>
<exclusion>
<artifactId>swagger-annotations</artifactId>
<groupId>io.swagger</groupId>
</exclusion>
<exclusion>
<artifactId>swagger-models</artifactId>
<groupId>io.swagger</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.22</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.22</version>
</dependency>
2.创建一个配置
@Configuration
@EnableSwagger2
@ConditionalOnProperty(prefix = "swagger2",value = {"enable"},havingValue = "true")
public class Swagger2 implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("**/swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars*")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
@Bean
public Docket platformApi() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).forCodeGeneration(true)
.select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
//扫描包路径
.apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
//扫描所有包
// .apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.securitySchemes(securitySchemes())
.securityContexts(securityContexts());
}
private List<ApiKey> securitySchemes() {
List<ApiKey> apiKeyList = new ArrayList<>();
apiKeyList.add(new ApiKey("token", "token", "header"));
return apiKeyList;
}
private List<SecurityContext> securityContexts() {
List<SecurityContext> securityContexts = new ArrayList<>();
securityContexts.add(
SecurityContext.builder()
.securityReferences(defaultAuth())
.forPaths(PathSelectors.any())
.build());
return securityContexts;
}
private List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
List<SecurityReference> securityReferences = new ArrayList<>();
securityReferences.add(new SecurityReference("token", authorizationScopes));
return securityReferences;
}
//构建 api文档的详细信息函数,注意这里的注解引用的是哪个
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//页面标题
.title("JAVA-API")
//描述
.description("JAVA-API接口文档")
//创建人
.contact(new Contact("xxx", "https://www.baidu.com/", "xxx@163.com"))
//版本号
.version("1.0")
.build();
}
}
3.在对应的controller写对应的注解
2.Postman
postman是一个软件,测试工程师会有用的比较多
3.Apipost
ApiPost是一款支持模拟POST、GET、PUT等常见HTTP请求,支持团队协作,并可直接生成并导出接口文档的API 文档、调试、Mock、测试一体化协作性能非常强大的工具。简单说:
ApiPost = Postman + Swagger + Mock
ApiPost产生的初衷是为了提高研发团队各个角色的效率!产品的使用受众为由前端开发、后端开发和测试人员以及技术经理组成的整个研发技术团队。ApiPost通过协作功能将研发团队的每个角色整合打通。
(7)代码版本管理工具
有支持GitHub、Gitee等仓库管理
idea集成了git,有切Branch、commint、add、pull、push等丰富的操作
2.SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理.
(8)远程连接工具
FinalShell、MobaXterm、XShell、secureCRT、Putty
1.FinalShell可以看到cpu、内存、交换机的使用情况
2.MobaXterm
功能十分强大,支持SSH,FTP,串口,VNC,X server等功能。 支持标签,切换也十分方便
3.XShell
Xshell是一个强大的安全终端模拟软件,界面设计简洁,使用方便,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。
4.secureCRT
SecureCRT支持SSH,同时支持Telnet和rlogin协议。SecureCRT是一款用于连接运行包括Windows、UNIX和VMS的理想工具,支持同时发送多个session。
5.Putty
PuTTY是一个Telnet/SSH/rlogin/纯TCP以及串行阜连线软件。较早的版本仅支援Windows平台。