前言:有些小伙伴不太明白@Autowired和@Resource在实际开发中的区别,使用起来也懵懵懂懂,本文将做梳理.
1.相同点
作用都是为了自动注入bean而使用,在真实开发中,一般情况下不会涉及到使用哪个的问题,都可以使用,效果也是一样的.但是在某些特定的情况下,会有不同的效果.
2.区别
<1>@Autowired是Spring下的注解,@Resource是J2EE下的注解.使用@Resource能使代码与Spring解耦 (这个区别可以忽略...)
<2>当需要注入的类在一个项目中,有超过1个时(当然是在不同的package下),不同就体现出来了.处理这种情况,这两种注解需要配置相关的参数/其他注解,时注入能成功.
//Autowired是按类的类型注入的,所以有两个类时,必须配合Qualifier注解,指定类名
@Autowired
@Qualifier("userService")
private UserService userService;
//Resource是按类的名字注入的,类1的名字符合,会注入类1.Resource后面的(name="userService")可写可不写
@Resource(name = "userService")
private UserService userService;
// 类1
@Service("userService")
public class UserService{
....(省略)
}
// 类2
public class UserService{
....(省略)
}