【发布时间】:2020-01-04 13:28:48
【问题描述】:
我创建了如下所示的 SocialConfig:
@Configuration
@EnableSocial
public class SocialConfig {
//enviroments
@Bean
public ConnectionFactoryLocator connectionFactoryLocator() {
ConnectionFactoryRegistry connectionFactoryRegistry = new ConnectionFactoryRegistry();
connectionFactoryRegistry.addConnectionFactory(new FacebookConnectionFactory(facebookAppId, facebookAppSecret));
connectionFactoryRegistry.addConnectionFactory(new GoogleConnectionFactory(googleAppId, googleAppSecret));
return connectionFactoryRegistry;
}
}
现在我想在一些服务中注入 fb 和 google 连接工厂,但我得到了没有 bean 的信息。我也尝试过不使用@EnableSocial,但根本没有帮助。我的目标是获取有关用户的信息,而无需在服务中设置应用程序 ID 和密码。
要清楚我如何注入它们:
private FacebookConnectionFactory facebookConnectionFactory;
private GoogleConnectionFactory googleConnectionFactory;
private UserRepository userRepository;
public SocialServiceImpl(FacebookConnectionFactory facebookConnectionFactory, GoogleConnectionFactory googleConnectionFactory, UserRepository userRepository) {
this.facebookConnectionFactory = facebookConnectionFactory;
this.googleConnectionFactory = googleConnectionFactory;
this.userRepository = userRepository;
}
但出现以下错误,
...SocialServiceImpl 中构造函数的参数 0 需要一个无法找到的 '>org.springframework.social.facebook.connect.FacebookConnectionFactory' 类型的 bean。
行动:
考虑在你的配置中定义一个“org.springframework.social.facebook.connect.FacebookConnectionFactory”类型的bean。
【问题讨论】:
-
您创建了
ConnectionFactoryLocator类型的 bean,而不是FacebookConnectionFactory,所以 Spring 无法注入任何东西。
标签: java spring-boot spring-social