properties⽂件之间的变量引⽤【springboot】
1 引⾔:
项⽬重构,单体项⽬转成微服务架构,然⼀些⽣产properties配置要定义在环境变量启动,并且由于⼀些properties⽂件是私有引⽤不得不涉及到properties变量引⽤问题;
1 如果封装私有代码通过配置⽂件交给sping加载@Value("com.id")引⽤,然 很简单, 只要 在环境变量定义对应的
spring.datasource.url=${spring.datasource.url}
css显示xmlspring.datasource.username=${spring.datasource.username}
spring.datasource.url=localhost:3306:test..
spring.datasource.
只要这样就好了;
然⽽,有些私有的会通过
InputStream ins = ResourceAsStream("classpath*:a.properties");;
InputStreamReader in = new InputStreamReader(ins, "utf-8");
prop.load(in);
String serverUrl = Property("URL");
String sysId = Property("Id");
虚拟主机0元购买String pwd = Property("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)ug编程培训班多少钱
at java.io.FileInputStream.<init>(FileInputStream.java:93)
就要换⼀种思路了, 这样我们必须要重写对应的a.properties⽂件了
以springboot演⽰举例说明:
全新源码器编程猫@Configuration
public class MyConfigurer implements EnvironmentAware {
private RelaxedPropertyResolver propertyResolver;
static final Log log = Log(MyConfigurer.class);
properties文件用什么打开@Override
public void setEnvironment(Environment env) {
/
/绑定并读取对应properties⽂件的值
propertyResolver = new RelaxedPropertyResolver(env);
Properties prop = new Properties();
FileOutputStream oFile=null;
matlab最新版try {
oFile =new Class().getResource("/").getPath()+"/a.properties",false);//true表⽰追加打开
prop.setProperty("url", Property("com.url"));
prop.setProperty("id", Property("com.id"));
prop.setProperty("pwd", Property("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⾥⾯的就可以读取到了
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论