正如我所看到的,春天找不到豆子
UserDetailsServiceImpl
,可能有几个原因。
首先,您可能忘记将
@Service
注释放在类的顶部 UserDetailsServiceImpl
。另外,由于上下文是关于 Spring 安全性的,所以请确保此类 UserDetailsServiceImpl
必须实现接口 UserDetailsService
@Service
public class UserDetailsServiceImpl implements UserDetailsService {
}
其次,spring可能无法扫描该文件夹。因此,请确保 Spring IOC 在初始化时必须扫描此包并配置 bean。
为了
@Autowired
一个 bean 实例,应该使用 Spring 构造型注释来修饰一个类,例如 @Component
、@Service
、@Repository
、@Controller
或 @Indexed
。只需使用这些角色注释之一装饰类,您就可以使用 @Autowired
与实例绑定。
否则,如果没有使用这些注解,你的类实例,你必须像这样手动注册到
BeanFactory
;
@Configuration
public class SomeClass {
...
@Bean
public UserDetailsServiceImpl userDetailsService() {
return new UserDetailsServiceImpl()
}
}
这个答案只是谈论您的具体问题,但您可以找出为什么在前面的示例中使用
@Configuration
。定义绑定的范围,单例(应用程序的一个实例)是Spring中的默认范围,如果bean应该根据您的要求处于不同的范围,则应该为bean定义范围。
就我而言,这是愚蠢的原因。项目中的其他地方还存在另一个不同的编译错误,因此 Intellij 无法检测到资源类。