gpt4 book ai didi

spring-boot - 在 spring boot 中从 application.properties 获取属性

转载 作者:行者123 更新时间:2023-12-04 03:02:56 24 4
gpt4 key购买 nike

我想使用 @Value 注释从 spring boot web 项目中的 application.properties 获取值。我以为我可以只使用 @Value 注释,因为我认为 application.properties 中的变量只是即时加载的。但是当我只写 @Value 注释时,它不起作用。

我在 application.poperties 中有一个属性

google.recaptcha.site-key=???

我想加载这个值,所以我编码如下。
@Controller
@RequestMapping("/member")
public class MemberController extends BaseController{

@Value("#{google.recaptcha.site-key}")
public String recaptchaSiteKey;

}

但是当我编译代码时 eclipse 返回错误。
Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'google' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public?
at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:226) ~[spring-expression-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:94) ~[spring-expression-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:81) ~[spring-expression-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.springframework.expression.spel.ast.CompoundExpression.getValueRef(CompoundExpression.java:51) ~[spring-expression-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:87) ~[spring-expression-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.springframework.expression.spel.ast.OpMinus.getValueInternal(OpMinus.java:98) ~[spring-expression-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:121) ~[spring-expression-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:262) ~[spring-expression-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:161) ~[spring-context-4.3.12.RELEASE.jar:4.3.12.RELEASE]
... 28 common frames omitted

说无法解析 google 对象,因为属性名称以“google.XXX”开头。

我该如何解决这个问题??

最佳答案

@Value("#{google.recaptcha.site-key}")尝试使用 $而不是 # .
编辑 : 稍微澄清一下。#告诉 spring 将以下字符串解释为 SpEL。
所以为了获得系统属性#你必须这样写:

  • @Value("#{systemProperties['google.recaptcha.site-key']}") .

  • 我认为它至少应该起作用

    关于spring-boot - 在 spring boot 中从 application.properties 获取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47508123/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com