SpringBoot多环境配置问题

简介: SpringBoot多环境配置问题

一、遇到的问题

在进行SpringBoot多环境配置时,想在不同环境下配置不同的tomcat端口,出现了:No active profile set, falling back to 1 default profile: "default"错误,连Tomcat端口号都无了

解决方案 :发现是建立项目时,没有导入spring-boot-starter-web的jar包,导入相关依赖问题即可解决

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

二、多环境端口配置

一般来说,一个项目从开始到正式上线运营,大致可以分为四种环境:


1、测试环境:test,外部用户无法访问,提供给测试人员使用


2、生产环境:pro,面向外部用户的环境,连接上互联网即可访问该环境


3、开发环境:dev,外部用户无法访问,供开发人员使用


4、灰度环境:pre,外部用户可以访问,但是服务器配置相对较低,其他和生产环境一样


面对四种环境,想配置不同的端口号怎么办,在配置好相应的端口号后,发现系统还是走默认的8080端口。在yaml配置文件中系统会通过"-"的形式来取出对应的环境,.properties文件可以通过spring.profiles.active=xx来激活指定的端口号,.yaml文件可以通过spring:profiles:active:xx来激活,其中“xx”代表“-”之后的(test、dev、pro之类的)。

2dd50c341054c368145904d8925e6bb7_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YWo5p2R56ys5LqM5biF,size_13,color_FFFFFF,t_70,g_se,x_16.png

比如我们想指定测试环境下的端口为8083,这里需要注意的是:.yaml文件一定要特别注意空格问题

当然,我们还可以把不同环境下的配置放入同一个yaml文件中,在yml配置文件中可以通过"---"的形式来划分文档块,但从横杠来看,系统貌似不推荐我们把不同环境下的配置放在一起

结果:指定8083端口成功

三、简单实战

比如现在公司有一个需求:用Swagger来写一个接口文档,只在开发中使用,在生产环境下不能使用

application-pro.properties:
server.port=8082
------------------------------------
application-dev.properties
server.port=8081
------------------------------------
application.properties
spring.profiles.active=dev

SwaggerConfig:

package com.study.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import java.util.ArrayList;
@Configuration
@EnableOpenApi
public class SwaggerConfig {
    @Bean //配置了swagger的Docket的bean实例
    public Docket docket(Environment environment) {
        //设置要显示的Swagger环境
        Profiles profiles=Profiles.of("dev");
        //判断是否处在自己设定的环境当中
        boolean flag = environment.acceptsProfiles(profiles);
        //获取项目的环境
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .enable(flag)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.study.contoller")
                .build();
    }
    //配置swagger信息:通过覆盖默认的apiInfo
    private ApiInfo apiInfo() {
        //配置作者的信息
        Contact contact = new Contact("全村第二帅", "https://blog.csdn.net/qq_53860947?type=blog", "279618364@qq.com");
        return new ApiInfo("自定义api文档",
                "码道万古如长夜",
                "v3.0",
                "https://blog.csdn.net/qq_53860947?type=blog",
                contact,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }
}

结果:

在开发环境中,即定义的8081端口,实现了用Swagger来写一个接口文档


相关文章
|
Java Linux Maven
SpringBoot多环境的yml或properties配置,生产环境和开发环境分离(超详细)
SpringBoot多环境的yml或properties配置,生产环境和开发环境分离(超详细)
293 0
|
5月前
|
运维 安全 Java
SpringBoot运维篇(打包,多环境,日志)
SpringBoot运维篇(打包,多环境,日志)
|
6月前
|
Java 应用服务中间件 Maven
SpringBoot概述&SpringBoot基础配置&yml的使用&多环境启动
SpringBoot概述&SpringBoot基础配置&yml的使用&多环境启动
93 2
|
6月前
|
Java 测试技术 Maven
【SpringBoot】多环境开发、分组管理、开发控制
【SpringBoot】多环境开发、分组管理、开发控制
58 0
|
6月前
|
Java
springboot激活多环境配置文件
springboot激活多环境配置文件
98 0
|
NoSQL Java 数据库连接
SpringBoot项目多层级多环境yml设计
需求场景 基础设施模块中有一些通用固定的基础配置。例如:日志的配置,Spring本身的配置以及MyBatis Plus相关的固定配置等等。 这些配置往往与环境无关,如何复用?
132 0
|
Java 测试技术 Maven
SpringBoot多环境配置文件打包
在使用springboot开发项目过程中,会有多种环境切换,例如开发环境,测试环境,演示环境,生产环境等,我们通过建立多个yml文件结合profiles.active属性进行环境指定,但是需要打包时就要手动更改配置文件逐个打包,容易造成不必要的误操作,本文就介绍如何进行不同环境配置文件的动态切换及一次性打包多个不同环境的部署包
261 0
|
Java 测试技术 Spring
【Springboot】什么是多环境开发?
【Springboot】什么是多环境开发?
|
Java 测试技术
小白救星-SpringBoot最简教程05: 多环境切换
实际开发项目的时候,分为多套环境,比如开发环境,测试环境,生产环境。不同环境的配置是不一样的
|
Java 测试技术 程序员
《SpringBoot篇》04.超详细多环境开发介绍
《SpringBoot篇》04.超详细多环境开发介绍
245 0
《SpringBoot篇》04.超详细多环境开发介绍