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