Younghae
2019-11-08 11:53
采纳率: 42.9%
浏览 1.2k
已采纳

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

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

应该怎么配置?

图片说明

图片说明

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 会飞的基德 2019-11-08 22:49
    已采纳

    针对楼主的问题,给出三种方式,可以自行选择。
    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

    已采纳该答案
    评论
    解决 2 无用
    打赏 举报
  • Rising-Sun 2019-11-08 13:26

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

    评论
    解决 无用
    打赏 举报
  • xyt3198 2019-11-08 14:16

    我建议你先了解一下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
    图片说明

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题