我看了一篇关于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
以及构造函数
@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);
}
}在搜索和阅读了讨论和文档之后,我仍然不知道该做什么。
发布于 2015-06-22 05:26:19
@Value("#{properties['facebook.clientId']}") 在@Value注释中,您使用的是SpEL表达式。在您的示例中,它将查找名为Map或Properties的properties对象,并尝试使用键facebook.clientId查找属性。
要使其工作,您需要添加以下内容
<util:properties id="properties" location="config.properties" />虽然这样做有效,但我强烈建议使用*PlaceHolderConfigurer而不是使用SpEL.First add atag to your configuration, next change your@Value`‘来简单地使用属性。
<context:property-placeholder location="config.properties" />那么你的@Value就可以像
@Value("${facebook.clientId}")它的另一个优点是,您还可以使用系统或环境属性来执行某些配置(或覆盖配置的部分)。
https://stackoverflow.com/questions/30367529
复制相似问题