@Autowired
和@Resource
都用于注入依赖对象,但它们的使用方式和实现机制略有不同。
- 使用方式
@Autowired
是Spring框架提供的注解,需要使用@Autowired
配合@Component
、@Service
等其他Spring注解一起使用。使用时可以标注在类的字段、setter方法、构造函数上。
@Component
public class UserService {
@Autowired
private UserDao userDao;
}
@Resource
是JDK提供的注解,不需要使用其他Spring注解一起使用。使用时可以标注在类的字段、setter方法上,也可以标注在类的构造函数上。
public class UserService {
@Resource
private UserDao userDao;
}
- 实现机制
@Autowired
是基于类型(byType)进行自动装配的,即Spring会在容器中寻找与指定类型相同的Bean,并将其注入到目标对象中。
@Resource
是基于名称(byName)或类型(byType)进行自动装配的,即它可以按照Bean的名称进行自动装配,也可以按照类型进行自动装配。如果同时指定了名称和类型,那么名称优先级更高。
总的来说,@Autowired
更常用,因为它更简洁、更直观,而@Resource
则更灵活,可以根据名称或类型进行自动装配。