properties文件之间的变量引用【springboot】

【Spring】Spring使用外部properties文件 Spring使用外部properties文件配置dataSource 过程中遇到的异常: java.lang.ClassNotFoundException: com.mchange.v2.ser.Indirector 通配符的匹配很全面, 但无法找到元素 'context:property-placeholder' 的声明。 阅读详情

1 引言: 

项目重构,单体项目转成微服务架构,然一些生产properties配置要定义在环境变量启动,并且由于一些properties文件是私有引用

不得不涉及到properties变量引用问题;

1 如果封装私有代码通过配置文件交给sping加载@Value("com.id")引用,然 很简单, 只要 在环境变量定义对应的

spring.datasource.url=${spring.datasource.url}
spring.datasource.username=${spring.datasource.username}

spring.datasource.url=localhost:3306:test..

spring.datasource.user=root....

只要这样就好了;

然而,有些私有的会通过

 

InputStream ins = this.class.getResourceAsStream("classpath*:a.properties");;
InputStreamReader in = new InputStreamReader(ins, "utf-8");
 prop.load(in);
 String serverUrl = prop.getProperty("URL");
 String sysId = prop.getProperty("Id");
 String pwd = prop.getProperty("pwd");
......

上面直接写在环境变量里面就不能生效了,

总是报${com.url}读取不到;

java.io.FileNotFoundException: ${com.path1} (系统找不到指定的文件。)
	at java.io.FileInputStream.open0(Native Method)
	at java.io.FileInputStream.open(FileInputStream.java:195)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at java.io.FileInputStream.<init>(FileInputStream.java:93)

就要换一种思路了,  这样我们必须要重写对应的a.properties文件了

以springboot演示举例说明:

 

 


@Configuration
public class MyConfigurer implements EnvironmentAware {

    private RelaxedPropertyResolver propertyResolver;
    static final Log log = LogFactory.getLog(MyConfigurer.class);

    @Override
    public void setEnvironment(Environment env) {
        //绑定并读取对应properties文件的值
        propertyResolver = new RelaxedPropertyResolver(env);

        Properties prop = new Properties();
        FileOutputStream oFile=null;

        try {

            oFile =new FileOutputStream(this.getClass().getResource("/").getPath()+"/a.properties",false);//true表示追加打开

            prop.setProperty("url",  propertyResolver.getProperty("com.url"));
            prop.setProperty("id", propertyResolver.getProperty("com.id"));
            prop.setProperty("pwd", propertyResolver.getProperty("com.pwd"));
            ###重写a.proerties文件
            prop.store(new OutputStreamWriter(oFile, "utf-8"), "The New properties file");
            log.info("重写a.properties文件完毕");

        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                if(oFile!=null){
                    oFile.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}

这样,私有的jar里面的就可以读取到了 

 

 

 

 

 

SpringBoot配置文件引用及多环境开发 阅读详情

相关推荐

语义通信高斯信道仿真代码

【代码】语义通信高斯信道仿真代码。

一去不复返的通信er 410

spring的一个properties配置文件引用另外一个properties配置的变量

在需要引用的基础配置文件中,输入基础配置文件的配置项 在src/resources/目录创建 app.properties。创建filters,并创建base.properties 输入基本的配置信息。某些场景需要在配置文件引用其他的配置文件,使用filter即可,pom文件中添加以下部分内容,在配置文件中使用${}引用即可。

robinhunan的博客 2353

宇树G1开发实践--PPT汇报(基础版)

本文介绍了一套基于宇树G1人形机器人的PPT自动演示系统,可实现"一键启动、自动演讲"功能。系统通过多线程同步技术,将音频播放与机器人动作完美结合,支持12种预设社交互动动作。硬件依赖宇树G1机器人、外接音响和网络连接,软件采用Python SDK和ALSA音频工具。核心功能包括音频文件自动排序、外接音响播放控制、机器人动作执行及音画同步。使用时需配置网络接口和音频设备号,运行后自动按顺序播放音频并执行随机动作。系统特别强调了安全注意事项,并提供了常见问题解决方案,适用于展会、汇报等需要

m0_47999117的博客 476

在配置文件properties使用${}引用多配置一层的properties的资源

在工作里发现老板项目一些重要内容都封装 在一个新的properties里面进行引用,把我看懵了。进行多方的百度发现这个 ${} 其实它并不能对别的文件资源进行引用,即使在同一目录下,终于也是返现这个是需要在Maven进行配置的,看来Maven没学好也是一个大坑啊!接下来看看怎么操作: 在 pom.xml找到 build 标签在里面添加内容: <build> <filters...

Xuy的博客 2526

Spring application.properties配置文件变量之间引用

问题 利用application.properties配置文件定义变量,在编写代码时可利用Spring占位符可以很方面的使用, 如@Value注解。 但是在application.properties配置文件内部, 变量之间如何引用呢? 考虑一种场景: 我们定义多个日志文件的路径,除了日志名称不同,其他完全相同。 如下所示: # application.properties文件 # 日志...

学而不厌 诲人不倦 3万+

Spring基本使用(三)——关于properties文件的引入和变量的注入

前言 在上一篇文章《Spring基本使用(二)——依赖注入》中,还有一个点没讲到,就是关于properties文件。现在常用的springboot中,经常会把一些配置属性写在application.properties中。写在application.properties文件中的属性,后面会注入到容器对象的属性中。本文准备先展示一下引入properties的几种方法。然后在稍微看看如何注入到对象的属性中。 引入properties文件 引入properties有四种方式,前三种是xml方式,最后一.

sadoshi的专栏 3538

springboot读取properties文件变量及pom文件变量

springboot读取properties文件变量及pom文件变量 ToolConfig.java文件内容 package com.xzc.one.common.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.s...

qq_35410576的博客 5381

springboot中的application.properties引用pom.xml中变量

springboot的默认配置文件application.properties引用pom.xml中的变量 在application.properties中我们引用了hostname这个变量,其中@hostname@代表的是pom.xml中的一个变量 server.port=8081 eureka.instance.hostname=127.0.0.1 eureka.client.regist...

weixin_39557697的博客 7534

SpringBoot引用properties,自动注入,属性相互引用,ResourceBundle

目录 1.在SpringBoot项目自动注入properties文件中的属性利用ResourceBundle获取properties中属性properties中文乱码 1.在SpringBoot项目自动注入properties文件中的属性 在resourc文件下创建config.properties,下面${project.base} 属性间相互引用 # 项目各个文件夹路径配置文件 # 项目的根目...

weiyang_tang的博客 5534

SpringBoot项目在yml或者properties文件中使用环境变量

当我们在SpringBoot打包的服务时,一些参数需要从外界获取,而非写死在properties文件里,可以通过以下两步方式配置: 1.在配置文件中配置环境变量 spring: datasource: driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:table}?useUnicode=true&char

丶自定义 1万+

SpringBoot的配置文件(properties与yml)

介绍有关SpringBoot的两种配置文件,在配置文件中设置系统配置项和用户自定义的配置,读取配置,两种配置文件的区别,切换不同环境下的配置文件

trong_ 的烂笔头 4534

SpringBoot中幕——配置文件properties与yml

本篇文章将介绍有关SpringBoot的配置文件SpringBoot的配置文件格式有两种,一种是项目中默认生成的properties文件,另外一种就是yml格式的配置文件,yml文件可以理解为properties文件的升级版,yml语法没有properties语法那么沉余,并且更通用。......

未见花闻的博客 3628

springboot中配置文件application.properties的理解

前言 Spring Boot使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来。所以,我们要想把Spring Boot玩的溜,就要懂得如何开启各个功能模块的默认配置,这就需要了解Spring Boot的配置文件application.properties。 正文 Spring Boot使用了一个全局的配置文件appli...

Cool的博客 4574

SpringBoot配置文件yml(或properties)使用pom.xml中的变量

yml中使用pom中的变量 在pom文件中增加(使用maven渲染yml) <build> <resources> <resource> <directory>src/main/resources</directory> ...

不如一默 2万+

SpringBoot读取properties文件里面的变量

springboot中读取我们自定义properties文件里面的变量

qq_58749506的博客 762

如何properties文件中参数之间相互调用和通过properties文件来设置随机值?

跟杨春娟学SpringBoot笔记:如何properties文件中参数之间相互调用和通过properties文件来设置随机值? 完成:第一遍 1.如何properties文件中参数之间相互调用和通过properties文件来设置随机值? 步骤一:在config.properties中设置参数间的引用 config.properties myboot.aws.key=23o48uworow3uro99w3ur3wurow3u myboot.aws.region=cn-north-1 myboot.aws.bu

ADbyCool的博客 1773

springboot中pom.xml文件引用properties中的变量

xml版本中 // .properties 文件内定义 <properties> <java.version>1.7</java.version> <java.encoding>UTF-8</java.encoding> <project.build.sourceEncoding>${java.encoding}</project.build.sourceEncoding> .

zhou_zhao_xu的博客 2534

easyDCP Player 2.0.9 DCP播放器

easyDCP Player 2.0.9 DCP播放器 备注:DCP专业播放器。1.9以上版本支持interop字幕和SMPTE字幕的播放(1.4.2版不支持SMPTE字幕)。

上一篇: Redis数据持久化
下一篇: Jsoup爬虫以及防反爬
calefaction_2015
博客等级 码龄12年 27粉丝 86原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值