@Resource 和 @Autowired 区别

1. @Resource  默认通过名称注入 ,如名称无找到则通过类型注入

2. @Autowired 默认通过类型注入,如存在多个类型则通过名称注入

 

//@Resource 默认通过名称注入 ,如名称无找到,则通过类型注入
@Resource
private IUserService userService;

例一
存在一个实现类: UserServiceImpl.java 自动注入UserServiceImpl 实现
例二
如果存在多个实现类:UserServiceImpl.java 、  UserServiceImpl4.java 则抛出异常(org.springframework.beans.factory.BeanCreationException)
优先名称未找到,按照类型有多个,所以指定名称即可 @Resource(name = "userServiceImpl") 
例三
如果存在多个实现类:UserServiceImpl.java 、  UserService.java 则根据名称注入UserService.java实现
优先名称找到UserService,但是想指定UserServiceImpl  指定名称即可 @Resource(name = "userServiceImpl") 

@Autowired
//默认通过类型注入,如存在多个类型则通过名称注入   

@Autowired
private IUserService userService;

例一
存在一个实现类: UserServiceImpl.java 自动注入UserServiceImpl 实现

例二
如果存在多个实现类:UserServiceImpl.java 、  UserServiceImpl2.java 则抛出异常
@Autowired
@Qualifier("userServiceImpl")
private IUserService userService; 指定名称不会报错

例三
如果存在多个实现类:UserServiceImpl.java 、  UserService.java 则根据名称注入UserService.java实现

@Resource 由jdk提供
@Autowired 由spring提供
@Autowired
可与 @Qualifier配套使用 而 @Resource自己单独使用

@Autowired(required=false):表示忽略当前要注入的bean,如果有直接注入,没有跳过,不会报错 默认是true 没有就会报错
 

 

posted @ 2019-10-31 09:54  爱上胡萝卜的猴子  阅读(352)  评论(0)    收藏  举报