【发布时间】:2019-12-20 22:42:08
【问题描述】:
我正在使用 Spring boot,并且在我的 application.yml 中有以下配置
apiKey: ${API_KEY}
API_KEY 是随机生成的,包含“#{”(如“sksjd#{lsd8”),表示 SpEL 表达式的开头 (https://docs.spring.io/spring/docs/4.3.10.RELEASE/spring-framework-reference/html/expressions.html#expressions-beandef)。这会导致 spring 尝试解释表达式,然后由于没有右括号而失败。
我希望字符串只按字面意思解释,我不想重新生成这个密钥,并尝试过:
apiKey: "${API_KEY}"
apiKey: '${API_KEY}'
apiKey: "#{'${API_KEY}'}"
apiKey: '#{"${API_KEY}"}'
更新: 我在一个依赖库中测试这些更改,结果发现我仍然在拉入库的主版本,而不是有更改的本地版本。
apiKey: "#{'${API_KEY}'}" 确实有效
【问题讨论】:
-
当您在 Java 代码中使用
@Value("#{'${API_KEY}'}")时,您确定这不起作用吗?我刚试过,我看到打印 sksjd#{lsd8 的值 -
我只是在java代码中试过这个,它对我不起作用,我仍然得到
No ending suffix '}' for expression -
你能添加完整的代码吗?我知道您在使用
"${API_KEY}"时会收到此错误No ending suffix '}' for expression starting,因为您在不使用 SpEL 的情况下直接引用该属性,但您不应该收到错误@Value("#{'${API_KEY}'}"))
标签: spring spring-boot