[Bug]:springboot自动注入被系统环境变量影响

jupiter
2023-08-24 / 0 评论 / 42 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年08月24日,已超过485天没有更新,若内容或图片失效,请留言反馈。

0.背景

下午在学习一下jasypt对配置文件进行加密,然后在配置文件里配置了jasypt.encryptor.password的值,然后以此为基准进行试验,结果一直各种报错,自动解密错误。

最后发现之前在系统环境变量里面设置了jasypt.encryptor.password的系统环境变量且二者的值不一样,最后运行的时候一直是以系统环境变量为准的。

1.实验论证ation.properties` 包含如下属性:

my.property=value

然后,您使用@Value注解来注入该属性值:

@Value("${my.property}")
private String property;

如果设置了名为 my.property的系统环境变量,并赋予其一个值,那么该值将优先用于注入,而不是配置文件中的值:

export my.property=new-value

在这种情况下,property 将被注入为 "new-value" 而不是配置文件中的值 "value"

因此在Spring Boot中,使用@Value注解自动注入属性时,默认情况下系统环境变量会影响注入的值。当存在与@Value注解中指定的属性相匹配的系统环境变量时,它们将覆盖配置文件中的属性值。

注意:配置系统环境变量需要重启才能生效!!
0

评论 (0)

打卡
取消