首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    聊聊Spring的环境抽象Environment,以及配置@Profile使用详解(介绍profile的6种激活方式)【享学Spring】

    前言 在我刚入行不久时,总是对上下文(Context)、环境(Environment)这类抽象概念搞不清楚、弄不明白、玩不转,更是不懂它哥俩的区别或者说是联系(说实话从中文上来说不好区分,至少我是这么认为的...则表示当前的运行环境配置(剖面), 对于应用程序中的 properties 而言,并不是所有的都会加载到系统中,只有其属性与 profile 匹配才会被激活加载 所以 Environment 对象的作用是确定哪些配置文件...{ // 返回此环境下激活的配置文件集 String[] getActiveProfiles(); // 如果未设置激活配置文件,则返回默认的激活的配置文件集 String[] getDefaultProfiles...的时候有N次提起,此处略 Profile使用的示例分析 在项目开发中,很多配置它在开发环境和线上环境是不一样的,最为典型就是数据库连接、redis连接等。...---- ---- 激活profile的6种方式 上面示例介绍的是自己手动API调用方式去激活profile,但在实际开发中,这样做显得非常的麻烦,而且并不是每位小伙伴都知道这个API和调用时机,使用门槛偏高

    2.7K30

    【死磕 Spring】---- Spring 的环境&属性:PropertySource、Environment、Profile

    原文出自:http://cmsblogs.com ---- spring.profiles.active 和 @Profile 这两个我相信各位都熟悉吧,主要功能是可以实现不同环境下(开发、测试、生产...public interface ConfigurablePropertyResolver extends PropertyResolver { // 返回执行类型转换时使用的 ConfigurableConversionService...profile 则表示当前的运行环境,对于应用程序中的 properties 而言,并不是所有的都会加载到系统中,只有其属性与 profile 一直才会被激活加载, 所以 Environment 对象的作用是确定哪些配置文件...public interface Environment extends PropertyResolver { // 返回此环境下激活的配置文件集 String[] getActiveProfiles...(); // 如果未设置激活配置文件,则返回默认的激活的配置文件集 String[] getDefaultProfiles(); boolean acceptsProfiles

    2.7K20

    SpringBoot基础篇配置信息之多环境配置信息

    优先级问题 上面虽然看是实现了多环境的配置问题,但看完之后有一个明显的疑问,选择环境的配置信息写死在application.yml文件中,难道说部署到测试和生产环境时,还得记得手动改这个配置的值么?...配置文件优先级 默认的配置文件是放在 src/main/resources 目录下,当然也是可以放其他位置的 外置,在相对于应用程序运行目录的 /config 子目录中 外置,在应用程序运行的目录中 内置...,不仅仅是从配置文件中获取,还要其他的一些配置信息来源 根据优先级对属性来源进行排序,如下 根目录下的开发工具全局设置属性(当开发工具激活时为~/.spring-boot-devtools.properties...测试中的@TestPropertySource注解。 测试中的@SpringBootTest#properties注解特性。...小结 SpringBoot是支持多环境的配置,通过配置属性 spring.profiles.active 来指定 spring.profiles.active参数指定多个配置文件时,右边的优于左边的 应用外的配置文件优先于应用内

    92760

    关于Spring属性处理器PropertyResolver以及应用运行环境Environment的深度分析,强大的StringValueResolver使用和解析【享学Spring】

    extends PropertyResolver { // 返回在解析属性时使用的ConfigurableConversionService。...它代表应用在一启动时注册到context中bean definitions的命名的逻辑分组。 properties:属性。几乎在所有应用中都扮演着重要角色,他可能源自多种源头。...Environment extends PropertyResolver { // 就算被激活 也是支持同时激活多个profiles的~ // 设置的key是:spring.profiles.active...从名称上解释为:标准实现 public class StandardEnvironment extends AbstractEnvironment { // 这两个值定义着 就是在@Value注解要使用它们时的...若key不存在返回null,但是若key的值里还有占位符,那就就继续解析。

    6.4K85

    SpringBoot基础篇配置信息之多环境配置信息

    优先级问题 上面虽然看是实现了多环境的配置问题,但看完之后有一个明显的疑问,选择环境的配置信息写死在application.yml文件中,难道说部署到测试和生产环境时,还得记得手动改这个配置的值么?...配置文件优先级 默认的配置文件是放在 src/main/resources 目录下,当然也是可以放其他位置的 外置,在相对于应用程序运行目录的 /config 子目录中 外置,在应用程序运行的目录中 内置...,不仅仅是从配置文件中获取,还要其他的一些配置信息来源 根据优先级对属性来源进行排序,如下 根目录下的开发工具全局设置属性(当开发工具激活时为~/.spring-boot-devtools.properties...,覆盖了配置文件中的dev [配置覆盖测试] 说明 当然可以直接传入完整的命令行参数--spring.profiles.active=pro,biz,这样代码内部就不需要进行特殊处理 b....小结 SpringBoot是支持多环境的配置,通过配置属性 spring.profiles.active 来指定 spring.profiles.active参数指定多个配置文件时,右边的优于左边的 应用外的配置文件优先于应用内

    1.3K20

    spring profile 多环境配置管理

    本地、测试、开发、产品等不同环境文件配置 现象   如果在开发时进行一些数据库测试,希望链接到一个测试的数据库,以避免对开发数据库的影响。   ...开发时的某些配置比如log4j日志的级别,和生产环境又有所区别。   各种此类的需求,让我希望有一个简单的切换开发环境的好办法。...---- 解决   现在spring3.1也给我们带来了profile,可以方便快速的切换环境。   使用也是非常方便。..."> ---- 激活 profile   spring 为我们提供了大量的激活 profile 的方法,可以通过代码来激活...,也可以通过系统环境变量、JVM参数、servlet上下文参数来定义 spring.profiles.active 参数激活 profile,这里我们通过定义 JVM 参数实现。

    1K110

    Spring_总结_04_高级配置(一)之Profile

    bean定义整理到一个或者多个profile中,在将应用部署到每个环境时,要确保对应的profile处于激活状态。...四、激活 Profile 1.激活策略 Spring在确定哪个profile 处于激活状态时,需要依赖两个独立的属性: spring.profiles.active  和 spring.profiles.default...将会查找spring.profiles.default的值,用以确定激活的环境 (3)如果这两个属性均没有设置,则没有激活的profile,因此只会创建哪些没有定义在profile中的bean 有多种方式来设置这两个属性...: (1)作为Web应用的上下文参数 (2)作为DispatcherServlet的初始化参数 (3)作为JNDI条目 (4)作为环境变量 (5)作为JVM的系统属性 (6)在集成测试类上,使用@ActiveProfiles...3.使用profile进行测试 在集成测试时,通过使用@AcitveProfiles注解,可以指定运行测试时激活哪个profile @RunWith(SpringJUnit4ClassRunner.class

    25340

    补习系列(22)-全面解读 Spring Profile 的用法

    比如: 开发环境,应用需要连接一个可供调试的数据库单机进程 生产环境,应用需要使用正式发布的数据库,通常是高可用的集群 测试环境,应用只需要使用内存式的模拟数据库 Spring框架提供了多profile...在SpringBoot的配置文件application.properties中,需要替换为这个maven传入的property: ## 使用Maven的属性进行替换 spring.profiles.active...3.7 使用 @ActiveProfiles @ActiveProfile 是用于单元测试场景的注解,可以为测试代码指定一个隔离的profile,如下: @ActiveProfiles("test"...如果在启动SpringBoot应用前对当前ConfigurableEnvironment对象注入了profile,则会优先使用这个参数, ActiveProfiles用于测试环境,其原理与此类似。...五、 案例 最后,我们在SpringBoot中演示一个使用Profile的例子。 一般,在开发环境和生产环境中的数据源配置是不同的,借助Profile我们可以定义出不同环境的数据源Bean。

    1K10

    SpringBoot 看似复杂的Environment,其实很简单

    后来发现,基本上软件都要配置一些环境变量,只不过有的是在安装时已经自动配好了而已,但是对于免安装版(直接解压)的则需要自己配。...如果所有源中都没找到,返回null就行了。 这样配置项(或配置属性)的问题就已经解决了,很简单吧。...比如汽车上了高速,我们想狂野一下,可以激活运动模式: spring.profiles.active=sports 最后要说的就是,这个Profile可以指定多个,用逗号分隔即可。...因为Spring是用集合存储的,所以支持多个,如下图09: ? 程序在判断哪些Profile被激活时,可以使用逻辑表达式,这样就更加灵活了。 支持与、或、非、括号,如下图10: ?...在SpringBoot中Environment的真面目 下面是非web环境: StandardEnvironment {activeProfiles=[], defaultProfiles=[default

    2.3K40

    如何使用Spring Boot的Profiles

    Spring提供了@Profile让我们为不同的环境创建不同的配置:例如,假设我们有生产,开发和测试等环境。在开发环境中,我们可以启用开发配置文件;在生产环境中我们可以启用生产配置文件等。...文件中为dev配置文件配置相同的属性,以使用内存中的H2数据库: spring.datasource.driver-class-name=org.h2.Driver spring.datasource.url....properties / .yml、命令行和以编程等三种方式激活相应的配置文件。...激活方式: 使用 application.properties属性文件激活 . spring.profiles.active=dev 2.使用命令行, 当我们在命令行添加一个活动配置时,将取代属性文件中的活动配置...测试中,使用@ActiveProfiles注释添加活动配置文件。

    1.2K30

    Java开发技术之Spring依赖注入知识学习

    提供在不同的环境下使用不同的配置 激活Profile Spring在确定哪个profile处于激活状态时,需要依赖两个独立的属性:spring.profiles.active和spring.profiles.default...如果spring.profiles.active和spring.profiles.default均没有设置的话,那就没有激活的profile,因此只会创建那些没有定义在profile中的bean。...使用profile进行测试 当运行集成测试时,通常会希望采用与生产环境(或者是生产环境的部分子集)相同的配置进行测试。...但是,如果配置中的bean定义在了profile中,那么在运行测试时,我们就需要有一种方式来启用合适的profile。...Spring提供了@ActiveProfiles注解,我们可以使用它来指定运行测试时要激活哪个profile。在集成测试时,通常想要激活的是开发环境的profile。

    62820

    xxl-job分环境注册

    一、背景二、聊一下spring运行环境三、实现方案四、验证五、参考 一、背景 互联网研发环境一般分为开发、测试、灰度(或预发)和线上,开发和测试共用数据库,预发和线上共用数据库,在我们使用分布式调度平台场景中...:[]}") private String[] activeProfiles; 拿到spring.profiles.active后,我们就可以根据既定的环境变量来定义当前运行的环境了,然后基于当前环境做一些个性化的事情...return xxlJobExecutor; } 基于@Profile注解改造,在暴露执行器的地方加上profile条件,限制测试和生产环境才会激活bean注入。...return xxlJobExecutor; } 改造后,只有spring.profiles.active等于test或prod时,才会激活XxlJobSpringExecutor的bean注册,而XxlJobSpringExecutor...return ReturnT.SUCCESS; } } 这个为什么能生效,我们需要了解下调度器注册原理,我们使用的是XxlJobSpringExecutor,其实现了ApplicationContextAware

    41520

    源码解读 Spring Boot Profiles

    正文 首先,我们先来看下一个简单的 Spring Boot 示例程序, ? 在主程序方法中,打印容器中获取到 User 对象,它只有一个 name 属性。 ?...表明了名称为 prod 的Profile 在程序中激活。...知道了日志打印来自 StandardEnvironment 对象的 activeProfiles 属性之后,就需要来看它是在什么时间被赋值的了。...至此,所有配置文件上的数据加载完存储到了与当前上下文关联的 environment 对象中,将 prod 作为 Active Profile 激活特定环境配置的工作就完成了。...,大量使用事件通知和设计模式,在分析源码时少不了一次又一次的运行断点,不过这需要我们充分利用DE工具调试功能,在错综复杂的代码中能更准确地定位目标。

    46530

    《Spring实战》读书笔记-第3章 高级装配

    数据库配置、加密算法以及与外部系统的集成是跨环境部署时会发生变化的几个典型例子。 比如,考虑一下数据库配置。在开发环境中,我们可能会使用嵌入式数据库,并预先加载测试数据。...profile Spring在确定哪个profile处于激活状态时,需要依赖两个独立的属性:spring.profiles.active和spring.profiles.default。...如果spring.profiles.active和spring.profiles.default均没有设置的话,那就没有激活的profile,因此只会创建那些没有定义在profile中的bean。...有多种方式来设置这两个属性: 作为DispatcherServlet的初始化参数; 作为Web应用的上下文参数; 作为JNDI条目; 作为环境变量; 作为JVM的系统属性; 在集成测试类上,使用@ActiveProfiles...toUpperCase() }’ 不是null,正常返回;如果是null,不执行后面的方法,直接返回null 7.

    67530
    领券