【发布时间】:2015-08-02 18:06:46
【问题描述】:
我阅读了一篇关于使用 facebook 进行身份验证的帖子,http://www.jasha.eu/blogposts/2013/09/retrieve-facebook-profile-data-java-spring-social.html
他使用 autowired 向构造函数注入 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);
}
}
搜索和阅读讨论和文档后,我仍然不知道该怎么做。
- #{}是spring EL支持的,不知道怎么用,不知道和${}的区别
- 如果我改成@Value("${facebook.clientId}"),不会有异常,然后我用debug模式读取clientId的值,它不显示237473571343,它显示${facebook. clientId},它工作正常吗?
【问题讨论】:
-
刚刚测试过,facebook 给了我无效的应用程序 ID ${facebook.clientId},所以从 # 更改为 $ 不起作用。我想我遗漏了一些东西,spring 没有将我的属性文件识别为 bean。
-
如果你没有
*PlaceHolderConfigurer什么都不会发生,也只是拍打一个属性文件以使其无法加载。向我们展示一些配置。此外,如果您使用的是 maven,则该文件应位于src/main/resources而不是src。 -
你是对的,我想我没有 PlaceHolderConfigurer,我的代码在添加
到 servlet.xml 后工作.但是我不知道util:properties和PlaceHolderConfigurer的区别,它们是一样的吗? -
不,它们不是,它不应该与它一起工作,除非你将它命名为
properties。您应该改用<context:properties-placeholder />。 -
Deinum 的答案是正确的。不知道如何回答。
标签: spring spring-annotations spring-el spring-java-config