-
Notifications
You must be signed in to change notification settings - Fork 441
Open
Labels
bugSomething isn't workingSomething isn't working
Description
最近在学习这个项目中的Spring Security,用其中的代码做了一个自己的项目,在线下用mvn package和java -jar都运行正常,使用DevOps部署到线上出现了循环依赖的异常。(为了使idea生成下面的图,加了几处@Autowired注解)
-
要生成
userController,就需要通过自动装配方式使用userServicepublic class UserController { private final UserService userService;
-
其中
userService需要bCryptPasswordEncoder,也是通过@Autowired方式装配public class UserService { @Autowired private final BCryptPasswordEncoder bCryptPasswordEncoder;
-
bCryptPasswordEncoder从securityConfig中由注解@Bean制造出public class SecurityConfig extends WebSecurityConfigurerAdapter { @Bean public BCryptPasswordEncoder bCryptPasswordEncoder() { return new BCryptPasswordEncoder(); }
-
在此之前,
securityConfig需要得到userDetailsServiceImplpublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired UserDetailsServiceImpl userDetailsServiceImpl;
-
userDetailsServiceImpl又需要使用userService来调用它的find方法@Service public class UserDetailsServiceImpl implements UserDetailsService { private final UserService userService; @Autowired public UserDetailsServiceImpl(UserService userService) { this.userService = userService; } @Override public UserDetails loadUserByUsername(String name) { User user = userService.find(name); return new JwtUser(user); } }
-
但此时的
userService还没有制造好……于是有了循环依赖异常org.springframework.beans.factory.UnsatisfiedDependencyException-->UnsatisfiedDependencyException--> ... -->beans.factory.BeanCurrentlyInCreationException
通过改写loadUserByUsername的方式,去除了UserDetailsServiceImpl对UserService的依赖,临时性地解决了这个异常。
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working


