我有一个Spring应用程序,它的属性文件中有一些加密的值,例如spring.security.user.password=ENC(ZUkuSkFAiu/k7v7G1538ouQmuSWeAuOucAVuvxLCDwwJ0mgnIdfl3N/RgiZMGeBm),我正在使用jasypt动态解密这些值。这在本地运行很好。
然而,当我在Cloud上部署应用程序时,我的属性文件现在从vcap变量中提取值。例如spring.security.user.password=${vcap.services.myconfig.credentials.user.password}
在PCF中,该值被添加为
user.password = ENC(ZUkuSkFAiu/k7v7G1538ouQmuSWeAuOucAVuvxLCDwwJ0mgnIdfl3N/RgiZMGeBm)
但是,现在我的应用程序启动失败了,我收到一个错误信息
错误22 --主o.s.b.web.embedded.tomcat.TomcatStarter :启动Tomcat上下文时出错。例外: org.springframework.beans.factory.UnsatisfiedDependencyException.消息:在类路径资源org/springframework/boot/autoconfigure/security/servlet/SecurityFilterAutoConfiguration.class:不满意的依赖项(通过方法'securityFilterChainRegistration‘参数0表示)中定义了名为'securityFilterChainRegistration’的bean创建错误;嵌套的异常是创建名称为'spring.security-org.springframework.boot.autoconfigure.security.SecurityProperties':的bean不能将属性绑定到'SecurityProperties‘:prefix=spring.security、ignoreInvalidFields=false、ignoreUnknownFields=true;嵌套异常是org.springframework.boot.context.properties.bind.BindException:未能将“spring.security.user.password”下的属性绑定到java.lang.String
是否有任何原因,我错过了为什么这个工作在本地,而不是在云铸造?
更新
cf env returns ...
System-Provided:
{
"VCAP_SERVICES": {
"user-provided": [
{
"binding_name": null,
"credentials": {
"JAVA_OPTS": "-Dspring.security.user.password=ENC\\\\(ZUkuSkFAiu/k7v7G1538ouQmuSWeAuOucAVuvxLCDwwJ0mgnIdfl3N/RgiZMGeBm\\\\)",
"user.password": "ENC(ZUkuSkFAiu/k7v7G1538ouQmuSWeAuOucAVuvxLCDwwJ0mgnIdfl3N/RgiZMGeBm)"
},
"instance_name": "myconfig",
"label": "user-provided",
"name": "myconfig",
"syslog_drain_url": "",
"tags": [],
"volume_mounts": []
}
]
}
}其中,这将传递工作正常的JAVA_OPTS版本和无法解析的user.password属性。
发布于 2021-03-14 14:02:44
试一次:
JAVA_OPTS=-Dspring.security.user.password=ENC\\(ZUkuSkFAiu/k7v7G1538ouQmuSWeAuOucAVuvxLCDwwJ0mgnIdfl3N/RgiZMGeBm\\)https://stackoverflow.com/questions/66605578
复制相似问题