【问题标题】:Inject Google and Facebook connection factory注入 Google 和 Facebook 连接工厂
【发布时间】: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


【解决方案1】:

您没有创建 bean,您应该像这样创建两个 bean,然后 Spring 可以将这些 bean 注入应用程序。另外,您可以查看spring documentation与bean创建和配置相关的内容。

@Bean
public FacebookConnectionFactory facebookConnectionFactory() {
    return new FacebookConnectionFactory(facebookAppId, facebookAppSecret);
}

@Bean
public GoogleConnectionFactory googleConnectionFactory() {
    return new GoogleConnectionFactory(googleAppId, googleAppSecret);
}

@Bean
public ConnectionFactoryLocator connectionFactoryLocator() {
    ConnectionFactoryRegistry connectionFactoryRegistry = new ConnectionFactoryRegistry();
    connectionFactoryRegistry.addConnectionFactory(facebookConnectionFactory());
    connectionFactoryRegistry.addConnectionFactory(googleConnectionFactory());
    return connectionFactoryRegistry;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    相关资源
    最近更新 更多