首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

但是对于这种非常实际的需求,Spring 怎么可能没有提供呢?下面小编就问题来对 Spring 的环境 & 属性来做一个分析说明。...概括 Spring 环境 & 属性由四个部分组成:PropertySource、PropertyResolver、Profile 和 Environment。...PropertySource:属性源,key-value 属性对抽象,用于配置数据。...PropertyResolver:属性解析器,用于解析属性配置 Profile:剖面,只有激活的剖面的组件/配置才会注册到 Spring 容器,类似于 Spring Boot 中的 profile Environment...该成员变量内部存储着一组 PropertySource,表示 key-value 键值对的源的抽象基类,即一个 PropertySource 对象则是一个 key-value 键值对。

2.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spring-属性文件自身的引用03

    导读 用法 ---- 导读 Spring-使用外部属性文件01 Spring-使用加密的属性文件02 Spring-属性文件自身的引用03 ---- 用法 Spring既允许在Bean定义中通过{propName...}引用属性值,也允许在属性文件中使用{propName}实现属性之间的相互引用。...jdbc.url=jdbc:oracle:thin:@172.25.246.11:1521:${jdbc.dbName} jdbc.username=cctb jdbc.password=xgj2017 在上述属性文件的定义中...jdbc.url通过${jdbc.dbName}引用了另外一个属性的值,对于一些复杂的属性,可以通过这种方式将属性变化的部分抽取出来,实现配置的最小化。...注意,如果一个属性太长 一行写不下来,可以在行后面加 “\” 将属性值划分为多行,比如 desc=太长了写不下来了啦啦啦啦啦啦啦啦\ 换一行吧

    97720

    Spring中PropertySource属性源配置文件的优先级、顺序问题大解析(加载流程)【享学Spring】

    因为只有SpringBoot才会自动的加载对应的属性源,而Spring Framework是没有这么自动化的(都是手动的)。...Spring内部是通过它来承载来自不同地方都的属性源的。...Spring认为每个属性源都应该是有名称的,也就是作为属性源的key~ // @since 3.1 public abstract class PropertySource { protected...属性源的加载流程 其实关于@PropertySource的加载,在之前有篇博文里已经有比较详细的分析了: 【小家Spring】Spring中@PropertySource和@ImportResource...,但是perperties文件里面其实也是支持占位符的(文件内的${xxx}这种占位符依旧可以用来引用本文件的内容、环境变量内容等等。

    7.5K32

    【小家Spring】Spring中读取配置的方式,@Value、@PropertySource、@ConfigurationProperties使用详解

    :加载配置属性源 此注解也是非常非常的强大,用好了,可以很好的实现配置文件的分离关注,大大提高开发的效率,实现集中化管理 最简单的应用,结合@Value注入属性值(也是最常见的应用) 通过@PropertySource...需要注意的是PropertySourceFactory的加载时机早于Spring Beans容器,因此实现上不能依赖于Spring的IOC。...@PropertySource多环境配置以及表达式使用(spring.profiles.active) 方法一:可以这么配置 @PropertySource(“classpath:jdbc-${spring.profiles.active...该注解在Spring Boot的自动化配置中得到了大量的使用 如SpringMVC的自动化配置: @ConfigurationProperties(prefix = "spring.mvc") public...细节:Bean的字段必须有get/set方法,请注意~~~ 另外还有一种结合@PropertySource使用的方式,可谓完美搭配 @Component @PropertySource("classpath

    4.3K20

    【小家Spring】Spring中@PropertySource和@ImportResource的区别,以及各自的实现原理解析

    在讲解之前,可以记住一个通用的的结论: @PropertySource用于导入.properties的属性配置文件(能导入yaml吗,且继续往下看吧) @ImportResource用于导入.xml...) @PropertySource Spring框架提供了PropertySource注解,目的是加载指定的属性文件。...,来处理某一类(请保证这一类拥有共同的前缀)属性值:@ConfigurationProperties @Configuration @PropertySource(value = "classpath:...> propertySource) { String name = propertySource.getName(); // 这个特别的重要,这个其实就是Spring处理配置文件优先级的原理...~~若不为null // 下面就是做一些属性合并的工作~~~~~ PropertySource<?

    2.4K20

    Spring Boot 将Freemarker打包到其他jar并在项目中引用的简单方法

    对于基于Spring Boot构建的项目,对Freemarker类库的封装也有简单的方法。...Spring Boot默认从classpath:/templates/下加载模板文件,那么我们用Maven构建模块的时候,在通用模块下,/resources下建相同的目录结构,是不是就能实现简单的封装呢...Paste_Image.png speedy-ext是整个项目中的通用模块,可以在其他项目中复用,由于shiro官方并没有对Freemarker支持的类库,所以在这里我封装了一个Shiro的Freemarker...Paste_Image.png 我们还需要将spring.freemarker.prefer-file-system-access设置为false才行! ?...总结 其实就一句话,将自定义的类库放到同样的模板目录下classpath:/templates,然后将Application.properties中的spring.freemarker.prefer-file-system-access

    1.1K30

    老项目迁移问题:@ImportResource导入的xml配置里的Bean能够使用@PropertySource导入的属性值吗?【享学Spring】

    ,能够起到稍微一点的作用~ 对此部分内容若需要热场,推荐可以先浏览一下这篇文章:【小家Spring】Spring中@PropertySource和@ImportResource的区别,以及各自的实现原理解析...value="${diy.name}"/> 可以看到此xml配置Bean中使用了占位符:${diy.name}来引用下面属性文件的属性值...= "classpath:spring-beans.xml") @PropertySource("classpath:my.properties") @Configuration public class...】Spring IoC是如何使用BeanWrapper和Java内省结合起来给Bean属性赋值的 我想说:此处介绍的是注解版怎么处理占位符问题,若你仍旧是传统的xml配置项目,至于具体使用哪个标签,小伙伴自行寻找咯...有了上面对Spring工程下的使用分析,此处就不用再花笔墨解释了~ 另外附加说明一点:哪怕你的属性不使用@PropertySource导入,而是写在SB自带的application.properties

    1.9K30

    Spring 全家桶之 Spring Boot 2.6.4(二)- Configuration(Part B)

    三、@PropertySource和@ImportSource @ImportResource注解可以读取指定的外部配置文件 @PropertySource注解可以加载指定的配置文件 与Spring Boot...,支持配置文件中的属性引用。...person.dog.name=${person.last-name}_pipi person.dog.age=2 执行PersonTest测试 引用不存在的属性 当引用不存在的属性时会原样输出,修改配置文件...为引用的不存在的属性设置默认值 属性不存在时为了避免原样输出也可以可以设置默认值,不存在的时候取默认值,在“:”后面设置默认值 person.dog.name=${person.hello:stark}...Bean的属性进行板顶 所有的配置项都来自自动配置类中启用的XxxProperties类,也就说说一旦自动配置类生效,这个配置类就会给容器中注册各种组件,这些组件的属性都是从@EnableConfigurationProperties

    76520

    其他工程引用monkey dev的动态库dylib用法

    但也存在我们想改用以类似于sdk的形式集成到其他业务工程代码内,则需要做下特殊处理。...以下会介绍下这个操作流程 步骤一:生成动态库(双架构) 此步骤是针对monkey dev的工程 release 编译 monkey dev工程本身包含一个编译target app的工程和一个编译动态库的工程...,我们可以选中编译动态库的target,使用release编译出一个双架构包。...debug 编译 或者我们也可以修改编译选项中的architectures中的build active architecture only,将其改为NO,这样debug时候就会编译出双架构包了 值得注意的是...让工程强制加载我们的动态库,因为动态库本身只有在使用时候才会加载 执行完上述命令后,再使用otool查看我们编译好的业务app的可执行文件,发现多了下面的依赖,说明当业务app跑起来时会加载下面的动态库

    2.3K40

    spring事务的传播属性--@Transaction的Propagation属性

    在Spring的@Transaction中,有个重要的属性:Propagation,指的是事务方法之间发生嵌套调用时,事务的传播行为(当前调用的这个方法的事务,和当前的其他事务之间的关系)。...在TransactionDefinition中定义了7种事务的传播行为,这里简单记录一下。...), //当前有事务,就加入这个事务,没有事务,就以非事务的方式执行 SUPPORTS(TransactionDefinition.PROPAGATION_SUPPORTS), //当前有事务...就加入这个事务,没有事务,就抛出异常 MANDATORY(TransactionDefinition.PROPAGATION_MANDATORY), //新建一个事务执行,如果当前有事务,就把当前的事务挂起...,会抛出异常 NEVER(TransactionDefinition.PROPAGATION_NEVER), //当前有事务,就新建一个事务,嵌套执行,当前无事务,就新建一个事务执行 //这个看了不同的文章

    2K30

    SpringBoot系列-配置解析

    5.来自 SPRING_APPLICATION_JSON 的属性(嵌入在环境变量或者系统属性【system propert】中的内联 JSON) 6.ServletConfig 初始化参数。...8.来自 java:comp/env 的 JNDI 属性。 9.Java 系统属性(System.getProperties())。 10.操作系统环境变量。...在配置文件处理期间,可以通过 spring.profiles.active 配置属性来激活其他配置文件。...附加的解析器将动态跟踪任何来自基础环境属性源的添加或删除(这个也是 SpringCloud Config 的底层支持原理)。...小结 整体看来,Spring 中对于配置的管理还是比较简单的,从 Environment 到 PropertySource 整个过程没有那么绕,就是单纯的把来自各个地方的配置统一塞到 MutablePropertySources

    1.1K30
    领券