我有一个课程,我在其中创建一个from scipy import optimize
:
@Bean
然后在其他课程中我想使用它,但我不能说它@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
尚未初始化。
类:
Bean
在这里我想用它:
@Configuration
@ComponentScan(basePackages = "com.inventory")
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
@Qualifier("databaseUsersDetailsService")
private UserDetailsService userDetailsService;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
在构造函数中,由于@Service
public class SessionService {
private final UserDetailsService userDetailsService;
private final BCryptPasswordEncoder encoder;
private final AuthenticationManager authenticationManager;
@Autowired
public SessionService(UserDetailsService userDetailsService, BCryptPasswordEncoder encoder, AuthenticationManager authenticationManager) {
this.userDetailsService = userDetailsService;
this.encoder = encoder;
this.authenticationManager = authenticationManager;
}
,我无法使用它。
有谁知道这里有什么问题?我正在使用no beans BCryptPasswordEncoder was found
。
答案 0 :(得分:1)
Spring上下文中没有read.csv.sql("1987.csv", "select * from file limit 3", eol = "\n",
filter = "bzip2 -cd 1987.csv.bz2")
个实例。实际上,你已经注册了一个BCryptPasswordEncoder
类型的bean,你应该注入一个这种类型的对象。
选择PasswordEncoder
的实现并不重要,在bean注册过程中你声明的类型确实很重要。
答案 1 :(得分:1)
如果没有提供此类型,则需要注入BCryptPasswordEncoder
。你有2个选择
因为您需要一个
而更改为完全实现@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
或者将您的注射要求转换为更一般的类型
@Autowired
public SessionService(UserDetailsService userDetailsService, PasswordEncoder encoder, AuthenticationManager authenticationManager) {
}
两种解决方案都有效。