摘要:此种方式需要修改的配置,通用性不高。在中初始化写一个类实现接口,重写容器初始化方法设置属性为为指定值。可以定义在一个属性文件中,在使用构建时使用测试,灰度或者生产环境的属性文件。
1.使用背景
项目开发一共有三个环境:测试环境,灰度环境和生产环境,比如我们想在测试环境下,不加载某些配置信息,可以通过profile来实现
2.激活profile实现方式JVM增加参数spring.profiles.active设置
在ServletContextListener 中初始化属性spring.profiles.active
3. JVM增加参数spring.profiles.active设置在JVM中增加参数spring.profiles.active设置,如果我们想设置spring.profiles.active为dev,使用Dspring.profiles.active="dev" 。
此种方式需要修改tomcat的JVM配置,通用性不高。
4. 在ServletContextListener 中初始化spring.profiles.active写一个类InitConfigListener实现接口ServletContextListener,重写容器初始化方法contextInitialized(),设置属性为spring.profiles.active为指定值environment。
environment可以定义在一个属性文件中,在使用maven构建时使用测试,灰度或者生产环境的属性文件。
在contextInitialized方法中读取指定属性文件,获取environment 值,通过setProperty即可实现。
@WebListener public class InitConfigListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { String environment = ""; //加载Properties属性文件获取environment值 //侦测jvm环境,并缓存到全局变量中 String env = System.setProperty("spring.profiles.active",environment); } @Override public void contextDestroyed(ServletContextEvent sce) { } }
spring.xml配置只在dev模式下加载配置文件spring-mybatis.xml
springboot使用注解@Profile和@Configuration来配置,@ActiveProfiles()在测试时切换环境
大家可以关注我的公众号:不知风在何处,相互沟通,共同进步。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67329.html
摘要:需要注意的是必须要使用版本为以上才支持属性。与格式文件不同,正对不同的,无法在一个文件设置,官方采用命名形式为格式来达成一样的效果。采用方式添加的是属于额外激活的,也就是说覆盖掉外部传入的指定的。 showImg(https://segmentfault.com/img/remote/1460000019924197?w=1050&h=500); Spring Boot Profile...
摘要:配置文件配置文件提供了一种方法来隔离应用程序配置的部分,并使其仅在某些环境中可用。特殊配置的配置文件或和通过引用的文件的特殊配置文件的变体被视为文件并被加载。 25. 配置文件 Spring配置文件提供了一种方法来隔离应用程序配置的部分,并使其仅在某些环境中可用。任何@Component或@Configuration都可以标记为@Profile,以限制加载时的限制,如下例所示: @Co...
摘要:装配提供了三种装配机制在中进行显示配置在中进行显示配置隐式的发现机制和自动装配机制。表示该类是一个组件,将自动创建该组件实例,表示注入组件实例,和功能类似,和功能类似,但和是规范中提供的注解。 基本原理 spring的基础是IOC和DI,其实IOC和DI是对同一件事从不同的方面进行描述的,两者在spring中是同一件事务。 IOC:控制反转,在这里就是指创建bean的主动权发生了转移,...
摘要:条件化使用的例子开发环境使用数据库,线上环境使用数据库数据库配置文件说明可以用来条件化,使用注解即可配置也行激活机制有时,激活标记的没有则激活标记的都没有,则只激活没有限定的激活方式有六种作为的初始化参数作为应用的上下文参数作为条目作为 @Profile 条件化 bean 使用 Profile 的例子:开发环境使用 H2 数据库,线上环境使用 MySql 数据库 application...
摘要:在集成测试时,通常想要激活的是开发环境的。因为没有耦合类名,因此可以随意重构的类名,不必担心破坏自动装配。在装配中,占位符的形式为使用包装的属性名称。参数装配的是名为的属性值。 环境与profile 配置profile bean 在3.1版本中,Spring引入了bean profile的功能。使用profile,首先将所有不同的bean定义整理到一个或多个profile之中,再将应用...
阅读 3325·2021-11-19 11:36
阅读 2926·2021-09-27 13:34
阅读 1989·2021-09-22 15:17
阅读 2403·2019-08-30 13:49
阅读 753·2019-08-26 13:58
阅读 1357·2019-08-26 10:47
阅读 2536·2019-08-23 18:05
阅读 598·2019-08-23 14:25