应用程序无法启动:找不到“org.springframework.security.crypto.password.PasswordEncoder”

问题描述 投票:0回答:1

描述:

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)

spring spring-boot spring-mvc spring-security
1个回答
0
投票

我认为您可能缺少一些配置。 要自动装配,必须有一个 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
是可选步骤。

© www.soinside.com 2019 - 2024. All rights reserved.