org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
没有被注射。无法找出原因。经历了stackoverflow内外的几个问题,每次都在改进我的搜索查询,只是为了找到任何人发布的类似问题。
以调试模式运行项目说在上下文初始化期间遇到异常,然后在下面打印出来:
Application failed to start due to an exception
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' available: expected at least 1 bean which qualifies as autowire candidate.
Description:
Field encoder in com.codingethics.flightreservation.controller.UserController required a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' that could not be found.
Action:
Consider defining a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' in your configuration.
错误在其消息中非常明显,但令人困惑,因为我已经使 UserController 类和字段编码器有资格使用必需的注释进行自动装配。此外,我在这里尝试注入Spring提供的依赖项,而不是用户定义的依赖项。我不确定是否需要更多配置。在同一个项目中,我以类似的方式成功使用了JavaMailSender。
所以困扰我的是为什么这样做?:
@Component
public class EmailUtil {
@Autowired
private JavaMailSender javaMailSender;
}
但这不: UserController.java
@Controller
public class UserController {
@Autowired
private BCryptPasswordEncoder encoder;
}
非常感谢任何形式的帮助/指导。
答案 0 :(得分:2)
您是否尝试在@Configuration类中手动创建 BCryptPasswordEncoder bean?
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
也许值得尝试。