SpringBoot的Profiles根据开发环境和测试环境载入不同的配置文件

本文主要是介绍SpringBoot的Profiles根据开发环境和测试环境载入不同的配置文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SpringBoot的Profiles根据开发环境和测试环境载入不同的配置文件

参考:https://www.cnblogs.com/bjlhx/p/8325374.html

1、需要有一个默认的配置文件,然后一个正式的配置文件,一个测试的配置文件。激活配置项,默认的配置文件application.properties也会加载进去的。编程的方式指定生效的profile。

默认的配置文件application.properties配置文件,然后再创建两个配置文件,一个是application-dev.properties,一个是application-test.properties配置文件。

application-dev.properties内容如下所示:

jdbc.drivername=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///book
jdbc.user=dev
jdbc.password=123456

application-test.properties内容如下所示:

jdbc.drivername=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///book
jdbc.user=test
jdbc.password=123456

 然后在主运行类里面进行编程修改加载那个配置文件,具体如下所示:

 1 package com.bie;
 2 
 3 import org.springframework.beans.BeansException;
 4 import org.springframework.boot.SpringApplication;
 5 import org.springframework.boot.autoconfigure.SpringBootApplication;
 6 import org.springframework.context.ConfigurableApplicationContext;
 7 
 8 import com.bie.springboot.DataSourceProperties;
 9 import com.bie.springboot.JdbcConfig;
10 import com.bie.springboot.TomcatProperties;
11 import com.bie.springboot.UserConfig;
12 
13 /**
14  * 
15  * @Description TODO
16  * @author biehl
17  * @Date 2018年12月30日 上午10:44:35
18  * 
19  */
20 @SpringBootApplication
21 public class Application {
22 
23     public static void main(String[] args) {
24         //ConfigurableApplicationContext run = SpringApplication.run(Application.class, args);
25         
26         SpringApplication app = new SpringApplication(Application.class);
27         //使正式环境的配置文件生效
28         app.setAdditionalProfiles("dev");
29         //使测试环境的配置文件生效
30         //app.setAdditionalProfiles("test");
31         ConfigurableApplicationContext context = app.run(args);
32         
33         System.out.println("===================================================");
34 
35         System.out.println("jdbc.drivername = " + context.getEnvironment().getProperty("jdbc.drivername"));
36         System.out.println("jdbc.url = " + context.getEnvironment().getProperty("jdbc.url"));
37         System.out.println("jdbc.user = " + context.getEnvironment().getProperty("jdbc.user"));
38         System.out.println("jdbc.password = " + context.getEnvironment().getProperty("jdbc.password"));
39 
40         System.out.println("===================================================");
41         
42         // 运行结束进行关闭操作
43         context.close();
44     }
45 
46 }

运行效果如下所示:

如何在@SpringBootTest中动态地启用不同的profiles?

由于是新接触到SpringBoot框架,所以也是慢慢学的,刚开始一致无法识别到自己的dev或者test配置文件。百度了不少教程,但是并没有解决这个问题,后来发现是我

的启动参数配置的是之前的,所以把启动参数删除了就行了。

 

将上面的配置参数删除了,就可以实现你想要的了。马上试试吧,骚年。

2、也可以使用@Profile注解进行选择启动dev或者test。装配了三个bean。如果test被激活了或者dev被激活了才会装配下面对应的bean,执行对应的方法。起到相应的作用和效果。

 1 package com.bie.springboot;
 2 
 3 import org.springframework.boot.SpringBootConfiguration;
 4 import org.springframework.context.annotation.Bean;
 5 import org.springframework.context.annotation.Profile;
 6 
 7 /**
 8  * 
 9  * @Description TODO
10  * @author biehl
11  * @Date 2018年12月30日 下午5:40:18
12  * 启动对应环境时候生效
13  */
14 @SpringBootConfiguration
15 public class MyConfig {
16     @Bean
17     public Runnable createRunnable() {
18         System.out.println("--------1--------");
19         return ()->{};
20     }
21 
22     @Bean
23     @Profile("dev")
24     public Runnable createRunnable2() {
25         System.out.println("--------2--------");
26         return ()->{};
27     }
28 
29     @Bean
30     @Profile("test")
31     public Runnable createRunnable3() {
32         System.out.println("--------3--------");
33         return ()->{};
34     }
35 }


待续......

posted @ 2018-12-30 17:45 别先生 阅读( ...) 评论( ...) 编辑 收藏

这篇关于SpringBoot的Profiles根据开发环境和测试环境载入不同的配置文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1060578

相关文章

Java实战之利用POI生成Excel图表

《Java实战之利用POI生成Excel图表》ApachePOI是Java生态中处理Office文档的核心工具,这篇文章主要为大家详细介绍了如何在Excel中创建折线图,柱状图,饼图等常见图表,需要的... 目录一、环境配置与依赖管理二、数据源准备与工作表构建三、图表生成核心步骤1. 折线图(Line Ch

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

Spring Boot 3 整合 Spring Cloud Gateway实践过程

《SpringBoot3整合SpringCloudGateway实践过程》本文介绍了如何使用SpringCloudAlibaba2023.0.0.0版本构建一个微服务网关,包括统一路由、限... 目录引子为什么需要微服务网关实践1.统一路由2.限流防刷3.登录鉴权小结引子当前微服务架构已成为中大型系统的标

Java集合中的List超详细讲解

《Java集合中的List超详细讲解》本文详细介绍了Java集合框架中的List接口,包括其在集合中的位置、继承体系、常用操作和代码示例,以及不同实现类(如ArrayList、LinkedList和V... 目录一,List的继承体系二,List的常用操作及代码示例1,创建List实例2,增加元素3,访问元

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键

Java 8 Stream filter流式过滤器详解

《Java8Streamfilter流式过滤器详解》本文介绍了Java8的StreamAPI中的filter方法,展示了如何使用lambda表达式根据条件过滤流式数据,通过实际代码示例,展示了f... 目录引言 一.Java 8 Stream 的过滤器(filter)二.Java 8 的 filter、fi

Java中实现订单超时自动取消功能(最新推荐)

《Java中实现订单超时自动取消功能(最新推荐)》本文介绍了Java中实现订单超时自动取消功能的几种方法,包括定时任务、JDK延迟队列、Redis过期监听、Redisson分布式延迟队列、Rocket... 目录1、定时任务2、JDK延迟队列 DelayQueue(1)定义实现Delayed接口的实体类 (

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

springboot的调度服务与异步服务使用详解

《springboot的调度服务与异步服务使用详解》本文主要介绍了Java的ScheduledExecutorService接口和SpringBoot中如何使用调度线程池,包括核心参数、创建方式、自定... 目录1.调度服务1.1.JDK之ScheduledExecutorService1.2.spring

将java程序打包成可执行文件的实现方式

《将java程序打包成可执行文件的实现方式》本文介绍了将Java程序打包成可执行文件的三种方法:手动打包(将编译后的代码及JRE运行环境一起打包),使用第三方打包工具(如Launch4j)和JDK自带... 目录1.问题提出2.如何将Java程序打包成可执行文件2.1将编译后的代码及jre运行环境一起打包2