情况1:创建的bean类型和自动装配字段的类型不同-[此操作无效]
@Autowired
BCryptPasswordEncoder passwordEncoder;
@Bean
PasswordEncoder passwordEncoder()
{
return new BCryptPasswordEncoder();
}
情况2:创建的bean类型和自动装配字段的类型相同-[此操作无效]
@Autowired PasswordEncoder passwordEncoder;
@Bean
PasswordEncoder passwordEncoder()
{
return new BCryptPasswordEncoder();
}
情况3:自动连线字段的类型是所创建bean的超级类型-[这将起作用]
是否已创建Bean类型为BCryptPasswordEncoder-是
是否创建了类型为PasswordEncoder的bean-是
@Autowired PasswordEncoder passwordEncoder;
@Bean
BCryptPasswordEncoder passwordEncoder()
{
return new BCryptPasswordEncoder();
}
情况4:多个相同类型且没有@Qualifier的bean-[这将不起作用]
NoUniqueBeanDefinitionException:没有类型为’osscpPasswordEncoder’的合格bean:
预期的单个匹配bean,但找到2:bcryptPasswordEncoder,md4PasswordEncoder
@Autowired PasswordEncoder bcrypt;
@Autowired PasswordEncoder md4;
@Bean
public PasswordEncoder bcryptPasswordEncoder()
{
return new BCryptPasswordEncoder();
}
@Bean
public PasswordEncoder md4PasswordEncoder()
{
return new Md4PasswordEncoder();
}
情况5:具有@Qualifier且具有相同类型的多个bean-[这将起作用]
@Autowired
@Qualifier("bcryptPasswordEncoder")
PasswordEncoder bcrypt;
@Autowired
@Qualifier("md4PasswordEncoder")
PasswordEncoder md4;
@Bean
public PasswordEncoder bcryptPasswordEncoder()
{
return new BCryptPasswordEncoder();
}
@Bean
public PasswordEncoder md4PasswordEncoder()
{
return new Md4PasswordEncoder();
}
情况6:多个类型相同且没有@Qualifier的bean,但字段名称与bean名称相同-[这将起作用]
@Autowired
PasswordEncoder bcryptPasswordEncoder;
@Autowired PasswordEncoder md4PasswordEncoder;
@Bean
public PasswordEncoder bcryptPasswordEncoder()
{
return new BCryptPasswordEncoder();
}
@Bean
public PasswordEncoder md4PasswordEncoder()
{
return new Md4PasswordEncoder();
}