@Autowired
:自动注入(默认 byType),Bean只有一个
@Autowired
private UserService userService;
@Resource
:当实现类不止一个时,@Resource
手动(指定名称)注入,与@Autowired
一起使用
@Resource(name="userServiceImpl2")
private UserService userService;
@Qualifier
:Java自己的注解 (默认 byName ),类似 @Autowired
@Autowired
@Qualifier("userServiceImpl1")
private UserService userService;
spring可以根据变量名称去寻找
结构(均设置名称)
- UserService
- UserServiceImplName
- UserServiceImplPhone
这样就可以找到使用userServiceImplPhone
的实现
@Autowired
UserService userServiceImplPhone;
还有Map的方式也能注入,Key就是Beam的名称
@Autowired
private Map<String,UserService> userServices;
ConditionalOnMissingBean
:初始化之前 先在spring容器中找看有没有 imageCodeGenerator ,有就使用,没有就使用系统默认创建
@Bean
@ConditionalOnMissingBean(name = "imageCodeGenerator")// 用户实现的命名 imageCodeGenerator