SpringBoot 如何根据不同profile选择不同配置

SpringBoot 根据不同profile选择不同配置

附上pom的 profiles配置

	<build>
		<finalName>${project.artifactId}</finalName>
		<resources>
			<resource>
				<directory>src/main/resources/</directory>
				<filtering>true</filtering>
			</resource>

		</resources>

		<plugins>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<encoding>utf-8</encoding>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
		</plugins>
	</build>

	<profiles>
		<profile>
			<id>dev</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>

			<properties>
				<profilesActive>dev</profilesActive>
			</properties>

		</profile>
		<profile>
			<id>test</id>
			<properties>
				<profilesActive>test</profilesActive>
			</properties>
		</profile>
		<profile>
			<id>prod</id>
			<properties>
				<profilesActive>prod</profilesActive>
			</properties>
			<build>
				<filters>
					<filter>/Users/xxx/Desktop/prod.properties</filter>
				</filters>
			</build>

		</profile>
	</profiles>

如果使用的是 application-prod.yml 文件

里面的占位符会被prod.properties替换掉

占位符用 两个@@ 例如:@jdbc.name@

SpringBoot不同profile过滤配置文件

项目多数情况下,需要部署到不同环境中.使用maven打包,不做其它配置时,默认输出的jar包中,包含所有的配置文件,这样显然不太合理,当不同的生产环境中,不希望存在其它的生产环境的配置文件,可采用如下配置

1.pom文件中追加profile配置

<!--不同开发环境配置-->
<profiles>
   <profile>
       <id>dev</id>
       <properties>
         <!--pa为自定义的属性,可在application.yml文件中引用-->
           <pa>dev</pa>
       </properties>
       <activation>
           <!--不加参数默认的profile-->
           <activeByDefault>true</activeByDefault>
       </activation>
   </profile>
   <profile>
       <id>test</id>
       <properties>
           <pa>test</pa>
       </properties>
   </profile>
<profiles>
<!--节点层级为project>profiles-->

2.pom文件中build节点下追加资源过滤选项

 <resources>
       <!--先忽略所有配置文件,后进行需要的配置文件的追加-->
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <excludes>
                <exclude>**/application-*.yml</exclude>
            </excludes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
             <!--此处的pa代表的是profile中自定义的属性-->
                <include>**/application-${pa}.yml</include>
            </includes>
        </resource>
 </resources>

3.application.yml文件中引用profile中定义参数

spring:
  profiles:
   # profile中定义的pa属性
    active: @pa@

4.手动打包指定环境

mvn clean package -Dmaven.test.skip=true -Pdev
  • -Dmaven.test.skip=true 表示跳过测试,可提高打包速度
  • -P后面的参数为profile的名称

5.开发状态下切换不同环境

  • 1.IDEA侧边栏Maven->Profiles勾选需要的环境
  • 2.项目目录下,终端中执行命令mvn -DskipTests=true clean install
  • 3.首次切换需要进行如下操作,后续调试运行无需更改

PS

如上配置后,直接更改spring.profiles.active无效,且项目运行会报错

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • spring Profile如何为不同环境提供不同的配置支持

    说明 Profile为在不同环境下使用不同的配置提供了支持(开发环境下的配置和生产环境下的配置肯定是不同的, 例如, 数据库的配置) . 在spring开发中用@Profile 注解使用来选择行配置系统属性.而在spring boot 中使用跟方便. 传统的spring Profile使用 参考<javaEE 发开的颠覆者>主要结合 @Configuration @Bean 注解使用 如下代码 : @Configuration //声明注解类 public class ProfileConfi

  • 基于Spring Boot不同的环境使用不同的配置方法

    spring 多文件配置: 1.properties文件 2.YAML文件 一.properties文件 在 Spring Boot 中, 多环境配置的文件名需要满足 application-{profile}. properties的格式, 其中{profile}对应你的环境标识, 如下所示. • application-dev.properties: 开发环境. • application-test.properties: 测试环境. • application-prod.propertie

  • 详解springboot + profile(不同环境读取不同配置)

    具体做法: 不同环境的配置设置一个配置文件,例如:dev环境下的配置配置在application-dev.properties中:prod环境下的配置配置在application-prod.properties中. 在application.properties中指定使用哪一个文件 1.application-dev.properties(dev环境下的配置) profile = dev_envrimont 2.application-prod.properties(prod环境下的配置) pr

  • Spring Boot使用profile如何配置不同环境的配置文件

    在springboot的开发中,有时候我们会有不同的配置,例如日志打印,数据库连接等,开发,测试,生产每个环境可能配置都不一致,还好,springboot支持通过不同的profile来配置不同环境的配置,下面就大致介绍一下yml配置文件跟properties配置文件怎么使用profile配置不同环境的配置文件... 先介绍一下开发环境: jdk版本是1.8 springboot的版本是1.4.1 开发工具为 intellij idea 我们先来介绍,使用一个yml文件,通过不同的profile来

  • SpringBoot 如何根据不同profile选择不同配置

    SpringBoot 根据不同profile选择不同配置 附上pom的 profiles配置 <build> <finalName>${project.artifactId}</finalName> <resources> <resource> <directory>src/main/resources/</directory> <filtering>true</filtering> </re

  • springboot学习笔记之 profile多环境配置切换的实现方式

    前言 一个应用程序从开发到上线,往往需要经历几个阶段,例如开发.测试.上线.每个阶段所用到的环境的配置可能都是不一样的,Springboot 应用可以很方便地在各个环境中对配置进行切换.所以,今天主要介绍Springboot profiles实现多环境配置切换. profiles多环境配置切换的四种方式 多个配置文件的方式yml 多文档块方式 设置程序参数 设置虚拟机参数 1.多个配置文件的方式 1.1.修改application.properties server.port=8080 1.2.

  • SpringBoot Profile多环境配置方式

    目录 Profile多环境配置 Profile配置详解 1.问题 2.为什么要使用profiles Profile多环境配置 我们在开发项目时,通常同一套程序会被发布到几个不同的环境,比如:开发.测试.生产等.其中每个环境的数据库地址.redis地 址.服务器端口等等配置都会不同,如果在为不同环境打包时都要频繁修改配置文件的话,那必将是个非常繁琐且容易发生错误的事. 对于多环境的配置,各种项目构建工具或是框架的基本思路是一致的,通过配置多份不同环境的配置文件,再通过打包命令指定需要打包的内容之后

  • springboot配置文件抽离 git管理统 配置中心详解

    springboot配置文件抽离,便于服务器读取对应配置文件,避免项目频繁更改配置文件,影响项目的调试与发布 1.创建统一配置中心项目conifg 1)pom配置依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</ver

  • SpringBoot集成mqtt的多模块项目配置详解

    前言 近期为了准备毕设,准备使用SpringBoot搭建mqtt后端,本篇主要记录了在IDEA中搭建SpringBoot mqtt的多模块项目的过程 开发工具及系统环境 IDE:IntelliJ IDEA 2020.2 操作系统:Windows 10 2004 Java Version:1.8 SpringBoot Version:2.1.17.RELEASE 项目路径 Study |----study-common # 存放公共类 |----study-mapper # mapper层 |--

  • spring boot 使用profile来分区配置的操作

    spring boot 使用profile来分区配置 很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据,这时候,我们可以利用profile在不同的环境下配置用不同的配置文件或者不同的配置 spring boot允许你通过命名约定按照一定的格式(application-{profile}.properties)来定义多个配置文件,然后通过在application.properyies通过spri

  • Springboot启动不检查JPA的数据源配置方式

    目录 Springboot启动不检查JPA的数据源配置 1.问题 2.方案 设置Springboot项目忽略JPA启动 解决方案 Springboot启动不检查JPA的数据源配置 1.问题 有时我们使用spring boot ,在依赖中配置了spring data jpa的依赖,此时spring boot启动时会自动检测数据源的配置,如果没有则报无数据源的错误. 但是这个依赖必须要有,因为代码需要根据一些条件选择是否启用数据源,则么办? 2.方案 在SpringApplication实例中设置如

  • springboot之端口设置和contextpath的配置方式

    目录 端口设置和contextpath的配置 端口设置 ContextPath配置 Springboot中添加contextPath profile配置 端口设置和contextpath的配置 端口设置 Spring boot 默认端口是8080,如果想要进行更改的话,只需要修改applicatoin.properties文件,在配置文件中加入: server.port= 9090 常用配置: ###################################################

  • SpringBoot详细讲解多个配置文件的配置流程

    目录 配置文件加载顺序 验证 前期准备 验证配置文件加载顺序 验证属性互补 总结 一般情况下,springboot默认会在resource目录下生成一个配置文件(application.properties或application.yaml),但其实springboot允许配置多个配置文件(application.properties或application.yaml),但是这并不意味着这些配置文件一定会替换默认生成的配置文件,它们是互补的存在.如果在某些场景下需要把配置文件单独拿出来并且启动的

  • SpringBoot整合Web之CORS支持与配置类和 XML配置及注册拦截器

    目录 本章概要 CORS 支持 1. 创建SpringBoot工程 2. 创建控制器 3. 配置跨域 4. 测试 配置类与 XML 配置 注册拦截器 本章概要 CORS 支持 配置类与 XML 配置 注册拦截器 CORS 支持 CORS (Cross-Origin Resource Sharing)是由 W3C 制定开发的一种跨域资源共享技术标准,其目的就是为了解决前端的跨域请求.在 Java EE 开发中,最常见的前端跨域请求解决方案是 JSONP ,但是 JSONP 只支持 GET 请求,而

随机推荐