Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建名为';注册控制器';:通过字段'表示未满足的依赖关系;密码编码器';;_Java_Spring_Spring Boot_Spring Mvc_Spring Security - Fatal编程技术网

Java 创建名为';注册控制器';:通过字段'表示未满足的依赖关系;密码编码器';;

Java 创建名为';注册控制器';:通过字段'表示未满足的依赖关系;密码编码器';;,java,spring,spring-boot,spring-mvc,spring-security,Java,Spring,Spring Boot,Spring Mvc,Spring Security,这是编译过程中出现的错误: 创建名为“registrationController”的bean时出错:通过字段“passwordEncoder”表示的未满足的依赖关系;嵌套异常为org.springframework.beans.factory.UnsatifiedDependencyException:创建名为“webSecurityConfig”的bean时出错:通过字段“userDetailsService”表示的未满足的依赖关系 我假设在注册为私人UserRepo UserRepo时;找

这是编译过程中出现的错误:

创建名为“registrationController”的bean时出错:通过字段“passwordEncoder”表示的未满足的依赖关系;嵌套异常为org.springframework.beans.factory.UnsatifiedDependencyException:创建名为“webSecurityConfig”的bean时出错:通过字段“userDetailsService”表示的未满足的依赖关系

我假设在注册为私人UserRepo UserRepo时;找不到bin。我不知道可能出现什么错误。请帮助我找出出现此错误的原因

注册控制器

@Controller
@RequestMapping("/registration")
public class RegistrationController {

@Autowired
private PasswordEncoder passwordEncoder;

@Autowired
private UserRepo userRepo;

@GetMapping
public String registration(){
    return "registration";
}

@PostMapping
public String processRegistration(RegistrationForm registrationForm){
    userRepo.save(registrationForm.toUser(passwordEncoder));
    return "redirect:/login";
}

}
网络安全配置

@Configuration
@启用Web安全性 公共类WebSecurityConfig扩展了WebSecurityConfigureAdapter{

@Autowired
private UserDetailsService userDetailsService;

// шифрование пароля
@Bean
public PasswordEncoder encoder(){
    return new BCryptPasswordEncoder(10);
}

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.userDetailsService(userDetailsService).passwordEncoder(encoder() );
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
            .antMatchers("/","/home","login","registration").permitAll()
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .loginPage("/login").defaultSuccessUrl("/").and()
            .logout().logoutUrl("/logout").logoutSuccessUrl("/").permitAll();

}
接口UserRepo

@NoRepositoryBean
public interface UserRepo extends CrudRepository<User,Long> {
  User findByUsername(String name);
}
细节服务

public class MyUserDetailsService implements UserDetailsService {

@Autowired
UserRepo userRepository;


@Override
public UserDetails loadUserByUsername(String username) throws 
  UsernameNotFoundException {
    return userRepository.findByUsername(username);
  }
}
丹尼斯。 stacktrace的最后一行显示:

    org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 
   'encoder': Requested bean is currently in creation: Is there an unresolvable circular reference?

这意味着当您试图在
configure
方法中使用“encoder”bean时,它正处于创建阶段。类似的问题已经解决了。我认为您应该按照这些问题的答案所建议的那样做-make
encoder()
方法静态。

stacktrace的最后一行说这是
“编码器”:请求的bean当前正在创建中:是否有一个不可解析的循环引用
,这几乎是不言自明的。将有对注入的依赖项的循环引用,这将导致此错误。我不太明白在这种情况下该怎么办他的情况。我需要它在控制器中加密密码…然后我该怎么做?你能提供userdetails服务实现吗?添加到描述中你的
User
类是
org.springframework.security.core.userdetails.User
还是你的自定义用户?这确实解决了一些问题。但还有一个问题。(com.security.Registration.controller.RegistrationController中的字段userRepo需要找不到类型为“com.security.Registration.repositories.userRepo”的bean。)
    org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 
   'encoder': Requested bean is currently in creation: Is there an unresolvable circular reference?