IntelliJ IDEA2018上SpringBoot的多环境布置和devtools热部署加Swagger

IntelliJ IDEA2018上SpringBoot的多环境布置和devtools热部署以及Swagger

可以用两种方式实现两种效果,一种是多个副application配置文件依赖主application配置文件启动;
另一种是各个application配置文件相互独立,且每次启动的是其中一个;

主副配置依赖启动

建两个具体环境的配置文件和一个主配置文件共三个;
在这里插入图片描述
application-debug.yml

server:
  servlet:
    session:
      timeout: 30m
  port: 12380

application-release.yml

server:
  servlet:
    session:
      timeout: 30m
  port: 12381

application.yml

# 启动application-debug环境配置
spring:
  profiles:
    active: debug

在这里插入图片描述
直接Ctrl+Alt+F9或者Ctrl+Alt+F10以默认环境配置启动项目。
完成。

各环境独立配置

把默认的配置文件删除
在这里插入图片描述
debug和release配置文件还是那些内容。

这是时候项目已经无法启动,因为系统不会自动从这两个配置启动,所以我们做的就是让项目从我们指定的配置文件启动就行了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
换个环境
在这里插入图片描述
在这里插入图片描述
OK,成了。

devtools项目热部署

spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。
devtools的原理
深层原理是使用了双类加载器机制:两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。

引入devtools依赖库

gradle

    runtimeOnly 'org.springframework.boot:spring-boot-devtools'

Idae IDE 配置:
在这里插入图片描述
在这里插入图片描述
配置好了,测试下效果。

修改及新建类: 自动重新部署
修改及新建html页面: 自动重新部署
修改application配置文件:自动重新部署

Swagger

引入依赖

    // https://mvnrepository.com/artifact/io.springfox/springfox-swagger2
    compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
   // https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui
    compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'

配置类

@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
//                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))//这是注意的代码 在Action上加注解@Api
                .apis(RequestHandlerSelectors.basePackage("com.anoo.Controller"))//这是注意的代码 扫描包方式
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("xxx接口文档")
                .description("xxx相关接口的文档")
                .termsOfServiceUrl("http://www.xxx.com")
                .version("1.0")
                .build();
    }
}

测试结果

http://localhost:8080/swagger-ui.html

在这里插入图片描述

发布了48 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/wangxudongx/article/details/90212383