1.Social包在SpringBoot2.x移除问题
spring-boot-autoconfigure1.5x版本中支持facebook,领英和推特
官方文档:https://docs.spring.io/spring-boot/docs/1.5.18.RELEASE/api/
spring-boot-autoconfigure2.x中版本找不到了
官方文档:https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/api/
问题:遇到SocialAutoConfigurerAdapter
,SocialProperties
和SocialWebAutoConfigurerAdapter
类不存在
解决方法:
不想引入1.5版本的springboot的话只能自己按照源码重写(复制粘贴)
官方Github也是这样写的:https://github.com/spring-projects/spring-socialSocialAutoConfigurerAdapter
源码
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; } }
SocialWebAutoConfiguration
源码
@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<?>> connectInterceptors