程序报错推断类型不符合上限
springsecurity需要自定义用户服务
代码
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(new CustomUserDetailsService());
}
public class CustomUserDetailsService implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
问题就在于无需自己实现
public interface UserDetailsService {
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
}
因为DaoAuthenticationConfigurer已经限定<T extends UserDetailsService>
public <T extends UserDetailsService> DaoAuthenticationConfigurer<AuthenticationManagerBuilder, T> userDetailsService(
T userDetailsService) throws Exception {
this.defaultUserDetailsService = userDetailsService;
return apply(new DaoAuthenticationConfigurer<AuthenticationManagerBuilder, T>(
userDetailsService));
}
原因就是这个泛型方法是受限类型参数,语法参考:
删掉自己声明的UserDetailsService接口,就发现UserDetailsService的真正接口了