描述:
com.Insurance.service.UserServiceImpl 中的字段passwordEncoder 需要一个类型为“org.springframework.security.crypto.password.PasswordEncoder”的 bean,但无法找到。
注入点有以下注释: - @org.springframework.beans.factory.annotation.Autowired(必需= true)
行动:
考虑在配置中定义“org.springframework.security.crypto.password.PasswordEncoder”类型的 bean。
[UserServiceImplSecurityConfig](https://i.sstatic.net/vTXeW1jo.png)
我认为您可能缺少一些配置。 要自动装配,必须有一个 bean,通常在您的配置类中定义,可供您的应用程序访问。 这可能是一个示例,您可以在其中找到有用的
@Bean
带注释的方法:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.password.PasswordEncoder;
@Configuration
public class BCryptPasswordEncoder implements PasswordEncoder {
@Override
public String encode(CharSequence rawPassword) {
return null;
}
@Override
public boolean matches(CharSequence rawPassword, String encodedPassword) {
return false;
}
@Bean
public PasswordEncoder encoder() {
return new BCryptPasswordEncoder();
}
}
所以在你的服务中会有这样的内容:
@Service
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
private final UserMapper userMapper;
private final PasswordEncoder passwordEncoder;
@Autowired
public UserServiceImpl(UserRepository userRepository, UserMapper userMapper, PasswordEncoder passwordEncoder) {
this.userRepository = userRepository;
this.userMapper = userMapper;
this.passwordEncoder = passwordEncoder;
}
}
诗。将所需的类绑定到最终类是最佳实践,构造函数上的
@Autwired
是可选步骤。