我有jasypt密码和在application.yml中定义的加密密码,如下所示:
jasypt:
encryptor:
password: ${secretKey}
spring:
datasource:
password: ENC(${password})
并使用@Value:
@Value("${spring.datasource.password}")
private String springPassword;
我在我的环境变量中定义了secretKey和password。但是,当我启动这个春季启动应用程序时,它会引发错误:
Caused by: org.springframework.cache.Cache$ValueRetrievalException: Value for key 'spring.datasource.password' could not be loaded using 'com.ulisesbocchio.jasyptspringboot.caching.CachingDelegateEncryptablePropertySource$$Lambda$209/172678484@5ae15'
如果我对两个键都进行了硬编码,则效果很好。
任何帮助将不胜感激。
答案 0 :(得分:1)
我知道为时已晚,但仍然如此。对我来说,将ENC()方法作为环境变量的一部分有效。
jasypt:
encryptor:
password: ${secretKey}
spring:
datasource:
password: ${PASSWORD}
设置环境变量时
export PASSWORD=ENC(yourPassword)
答案 1 :(得分:0)
我有类似的问题。在我的情况下,原因是我在类路径上有jasypt-1.9.2.jar和jasypt-1.9.4.jar。
jasypt-1.9.4.jar来自jasypt-spring-boot 2.1.1。 jasypt-1.9.2.jar来自wss4j-ws-security-common 2.2.2。
更改为jasypt-spring-boot 2.1.0可以解决我的情况。