按照以前项目搭建框架,启动报错
The dependencies of some of the beans in the application context form a cycle:
目测是循环依赖什么的问题,
在userSecurityConfig注入了UserService
在UserService中使用了PasswordEncoder
在userSecurityConfig继承的SecurityConfig中声明了一个Bean,PasswordEncoder
我理解的是:这就造成了,在创建A的时候,里面需要调用B,在去调用B的时候,里面需要声明A,就像系统中的进程死锁问题,
奇怪的是,之前的项目也是这么声明和调用的,那个没有出问题,后来发现那个springboot使用的是2.2.9.RELEASE
,我切换到这个版本,竟然没有报错,真是版本问题了,
现在我需要在service中使用编码器将用户密码加密,可以使用hutool第三方工具类BCrypt
针对其他解决方法:
一、改配置文件,直接允许循环引用,简单粗暴:
二:循环引用主要是因为会导致Spring不知道该先创建哪个Bean才会被禁用的,可以使用@Lazy注解指定某个Bean进行懒加载就可以优雅解决该问题,比如在SecurityConfig中懒加载UserService
参考链接Spring Bean 循环依赖