首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用@Value向构造函数注入属性,SpelEvaluationException: EL1008E (4.1.6)

使用@Value向构造函数注入属性,SpelEvaluationException: EL1008E (4.1.6)
EN

Stack Overflow用户
提问于 2015-05-21 07:42:58
回答 1查看 1.9K关注 0票数 1

我看了一篇关于facebook认证的文章,http://www.jasha.eu/blogposts/2013/09/retrieve-facebook-profile-data-java-spring-social.html

他使用自动加载来向构造函数注入3个参数。这给了我SpelEvaluationException。

我的项目,我在/src/下添加了一个config.properties。

facebook.clientId=237473571343 Facebook.clientSecret=9iuwijig[sa][w90u2tjgjgj] application.host=http://localhost:8080

以及构造函数

代码语言:javascript
复制
@Controller
public class FacebookSpringSocialAuthenticator {
  public static final String STATE = "state";
  private String applicationHost;
  private FacebookConnectionFactory facebookConnectionFactory;

  @Autowired
  public FacebookSpringSocialAuthenticator(
      @Value("#{properties['facebook.clientId']}") 
        String clientId,
      @Value("#{properties['facebook.clientSecret']}") 
        String clientSecret,
      @Value("#{properties['application.host']}") 
        String applicationHost) {
    this.applicationHost = applicationHost;
    facebookConnectionFactory = 
      new FacebookConnectionFactory(clientId, clientSecret);
  }
}

在搜索和阅读了讨论和文档之后,我仍然不知道该做什么。

  1. #{}是spring支持,不知道如何使用它,也不知道${}的区别。
  2. 如果我更改为@ value ("${facebook.clientId}"),也没有例外,那么我使用调试模式读取clientId的值,它不显示237473571343,它显示${facebook.clientId},这样工作正常吗?
EN

回答 1

Stack Overflow用户

发布于 2015-06-22 05:26:19

代码语言:javascript
复制
@Value("#{properties['facebook.clientId']}") 

@Value注释中,您使用的是SpEL表达式。在您的示例中,它将查找名为MapPropertiesproperties对象,并尝试使用键facebook.clientId查找属性。

要使其工作,您需要添加以下内容

代码语言:javascript
复制
<util:properties id="properties" location="config.properties" />

虽然这样做有效,但我强烈建议使用*PlaceHolderConfigurer而不是使用SpEL.First add atag to your configuration, next change your@Value`‘来简单地使用属性。

代码语言:javascript
复制
<context:property-placeholder location="config.properties" />

那么你的@Value就可以像

代码语言:javascript
复制
@Value("${facebook.clientId}")

它的另一个优点是,您还可以使用系统或环境属性来执行某些配置(或覆盖配置的部分)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30367529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档