想问下spring yml文件中账号密码引用外部配置文件中定义的方法

在application.yml中通过$(password)方式引用定义的密码,
$(password)定义是在外部的一个文件中定义的(项目包外的),通过指定全路径指定,比如C:\XXX.yml

应该怎么配置?

图片说明

图片说明

3个回答

针对楼主的问题,给出三种方式,可以自行选择。
1、启动时给密码,具体方式就是,在java包application.yml里不配置密码,拿到打好的java包,启动时添加上这个参数。

nohup java -jar XXX.jar --spring.datasource.password=123456 >/dev/null 2>&1 &

其中,XXX是你的java包名,123456是你的密码。(nohup是隐式启动,>/dev/null 是去系统的日志,不会影响你自己的日志,直接用就好)
若嫌每次启动都要输密码麻烦,可以复制到文本文档,保存为.sh 脚本,每次运行脚本即可。
2、启动时,加载外部配置文件
a、创建外部配置文件 取名为 application.yml 里面配置好password;
b、将这个配置文件放在与jar包同级目录下
c、正常启动即可
另外说明一下,各个配置文件是互补配置,所以,不会影响其他配置。
3、一定要加载某个确定位置(比如c:/config/application.yml)的配置文件
在代码中添加数据源配置类,在类上使用注解指定@PropertySource("c:/config/application.yml")

官网具体有17中配置文件加载方式,有兴趣可以自己去看下
https://docs.spring.io/spring-boot/docs/2.2.1.RELEASE/reference/html/spring-boot-features.html#boot-features-external-config
2. Externalized Configuration

weixin_38342534
会飞的基德 回复Younghae: 刚刚看到,很高兴能为你解答问题,那个问题我已经看过,具体我这边会测试一下,如果有结果会在问题下方给出答案
5 个月之前 回复
Younghae
Younghae 顺便 我有另外一个问题,能帮我回答吗? https://ask.csdn.net/questions/932315
5 个月之前 回复
Younghae
Younghae 这个比较符合我提问的意图,感谢 我去试一下。
5 个月之前 回复

方式不正确
application中不需要写密码
直接在common文件中写
spring:
datasource:
password:"xxx"
include后应该是没有问题的

hou792163605
Rising-Sun 补充一下 common文件不需要有其他根节点比如你写的common节点不需要直接写spring就好
5 个月之前 回复

我建议你先了解一下spring boot读取配置文件的优先级,放在项目包里面的application.properties或application.yaml文件的优先级是最低的,你只要在一个高优先级的地方重新把spring.datasource.password这个配置重新覆盖项目包里面的配置就行了,spring boot会优先使用优先级高的地方的配置文件的
参考一下官方这篇文章:https://docs.spring.io/spring-boot/docs/2.2.1.RELEASE/reference/html/spring-boot-features.html#boot-features里面的2. Externalized Configuration
图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问