天天看點

源碼分析關于SpringBoot2.x版本與1.5版本之間的問題

1.Social包在SpringBoot2.x移除問題

源碼分析關于SpringBoot2.x版本與1.5版本之間的問題

image.png

spring-boot-autoconfigure2.x中版本找不到了

源碼分析關于SpringBoot2.x版本與1.5版本之間的問題

問題:遇到​

​SocialAutoConfigurerAdapter​

​,​

​SocialProperties​

​和​

​SocialWebAutoConfigurerAdapter​

​類不存在

解決方法:

不想引入1.5版本的springboot的話隻能自己按照源碼重寫(複制粘貼)

public abstract class SocialAutoConfigurerAdapter extends SocialConfigurerAdapter {
public SocialAutoConfigurerAdapter() {
    }
public void addConnectionFactories(ConnectionFactoryConfigurer configurer, Environment environment) {
configurer.addConnectionFactory(this.createConnectionFactory());
    }
protected abstract ConnectionFactory<?> createConnectionFactory();
}
      

​SocialProperties​

​源碼

public abstract class SocialProperties {
private String appId;
private String appSecret;
public SocialProperties() {
    }
public String getAppId() {
return this.appId;
    }
public void setAppId(String appId) {
this.appId = appId;
    }
public String getAppSecret() {
return this.appSecret;
    }
public void setAppSecret(String appSecret) {
this.appSecret = appSecret;
    }
}
      
@Configuration
@ConditionalOnClass({ConnectController.class, SocialConfigurerAdapter.class})
@ConditionalOnBean({ConnectionFactoryLocator.class, UsersConnectionRepository.class})
@AutoConfigureBefore({ThymeleafAutoConfiguration.class})
@AutoConfigureAfter({WebMvcAutoConfiguration.class})
public class SocialWebAutoConfiguration {
public SocialWebAutoConfiguration() {
    }

private static class SecurityContextUserIdSource implements UserIdSource {
private SecurityContextUserIdSource() {
        }

public String getUserId() {
SecurityContext context = SecurityContextHolder.getContext();
Authentication authentication = context.getAuthentication();
Assert.state(authentication != null, "Unable to get a ConnectionRepository: no user signed in");
return authentication.getName();
        }
    }

@Configuration
@ConditionalOnClass({SpringResourceResourceResolver.class})
protected static class SpringSocialThymeleafConfig {
protected SpringSocialThymeleafConfig() {
        }

@Bean
@ConditionalOnMissingBean
public SpringSocialDialect springSocialDialect() {
return new SpringSocialDialect();
        }
    }

@Configuration
@EnableSocial
@ConditionalOnWebApplication
@ConditionalOnClass({SecurityContextHolder.class})
protected static class AuthenticationUserIdSourceConfig extends SocialConfigurerAdapter {
protected AuthenticationUserIdSourceConfig() {
        }

public UserIdSource getUserIdSource() {
return new SocialWebAutoConfiguration.SecurityContextUserIdSource();
        }
    }

@Configuration
@EnableSocial
@ConditionalOnWebApplication
@ConditionalOnMissingClass({"org.springframework.security.core.context.SecurityContextHolder"})
protected static class AnonymousUserIdSourceConfig extends SocialConfigurerAdapter {
protected AnonymousUserIdSourceConfig() {
        }

public UserIdSource getUserIdSource() {
return new UserIdSource() {
public String getUserId() {
return "anonymous";
                }
            };
        }
    }

@Configuration
@EnableSocial
@ConditionalOnWebApplication
protected static class SocialAutoConfigurationAdapter extends SocialConfigurerAdapter {
private final List<ConnectInterceptor<