Spring-Social:让我的bean取代自动配置创建的bean

时间:2018-03-14 15:12:50

标签: spring-boot spring-social

我一直在关注如何让网站使用spring-security和spring-social进行身份验证的一些教程。我得到了整个基本的工作。该代码包含一个用于定义ConnectionFactoryLocator的bean,如下所示:

@Bean
public ConnectionFactoryLocator connectionFactoryLocator() {
    ConnectionFactoryRegistry registry = new ConnectionFactoryRegistry();

    registry.addConnectionFactory(new FacebookConnectionFactory(
        environment.getProperty("spring.social.facebook.appId"),
        environment.getProperty("spring.social.facebook.appSecret")));

    return registry;
}

所以,这一切都很好,直到我想在这个bean中做一些不同的事情,并意识到它根本就没用过。 spring-boot输出显示:

Overriding bean definition for bean 'connectionFactoryLocator' with a different definition: replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=true; factoryBeanName=securityConfiguration; factoryMethodName=connectionFactoryLocator; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [myapp/configuration/SecurityConfiguration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.social.config.annotation.SocialConfiguration; factoryMethodName=connectionFactoryLocator; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/social/config/annotation/SocialConfiguration.class]]

我在线阅读并了解了自动配置的概念,以及它可以启用而无需在spring-boot中明确请求它。

https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html

根据这个站点,配置应该是非侵入性的,并且定义我自己的bean应该使自动的"退回"。但是,在这种情况下不会发生这种情况。

我尝试添加属性spring.autoconfigure.exclude=org.springframework.social.config.annotation.SocialConfiguration.class

但覆盖仍然发生。使用调试运行应用程序会正确显示排除

Exclusions:
-----------

    org.springframework.social.config.annotation.SocialConfiguration.class

但是自动配置的bean是占主导地位的bean。我看到的最后一个有趣的事情是,如果我删除了我自己的bean的定义,应用程序就不再开始抱怨该bean没有匹配项了。即使没有排除,这最后的事情也会发生。

我还尝试将id / secret属性的名称从spring-social标准更改为我自己的名称,除了在自动配置的bean上运行时应用程序无法正常工作之外没有任何效果。

我意识到可能有一个基本的春天概念,我不是很抓,但我已经读过并且不能理解。似乎弄明白它可能是什么。

感谢。

0 个答案:

没有答案