@Autowired跟@Resource 的区别
时间: 2024-01-16 20:53:37 浏览: 71
@Autowired和@Resource都是用于依赖注入的注解,它们的作用很相似,但是有一些区别。
1. @Autowired是Spring框架的注解,而@Resource是Java EE的注解,需要导入javax.annotation.Resource包。
2. @Autowired默认按照byType的方式进行依赖注入,如果找到多个类型匹配的Bean,则会按照byName的方式进行匹配,如果仍然找到多个,则会抛出异常。而@Resource默认按照byName的方式进行依赖注入,如果找不到与名称匹配的Bean,则会抛出异常。
3. @Autowired可以用在字段、构造器、Setter方法上,而@Resource只能用在字段和Setter方法上。
4. @Autowired是Spring特有的注解,不具有移植性,而@Resource是Java EE标准注解,具有移植性。
综上所述,如果项目使用Spring框架,建议使用@Autowired注解进行依赖注入;如果要保证项目的移植性,建议使用@Resource注解。
相关问题
@autowired注解和@resource注解区别
`@Autowired`和`@Resource`注解都是用于实现依赖注入的,但它们有一些区别:
1. 来源:`@Autowired`是Spring框架提供的注解,而`@Resource`是Java EE标准的注解。
2. 注入方式:`@Autowired`默认按照byType的方式进行装配,即根据类型来自动注入依赖对象。如果有多个匹配的bean,可以使用`@Qualifier`注解指定具体的bean。而`@Resource`默认按照byName的方式进行装配,即根据名称来自动注入依赖对象。如果没有指定name属性,则会根据字段或方法名进行匹配。
3. 兼容性:`@Autowired`是Spring框架特有的注解,与Spring相关的功能更加强大和灵活。而`@Resource`是Java EE标准的注解,可以在任何Java EE容器中使用。
4. 需要导入的包:`@Autowired`需要导入`org.springframework.beans.factory.annotation.Autowired`包,而`@Resource`需要导入`javax.annotation.Resource`包。
总体来说,`@Autowired`注解更加常用和灵活,适用于Spring项目;而`@Resource`注解则是Java EE标准的一部分,适用于Java EE容器。在实际使用中,可以根据需要选择合适的注解来实现依赖注入。
Spring 中@Autowired 与@Resource ?
@Autowired和@Resource都是Spring中用于依赖注入的注解。
@Autowired是按照类型进行自动装配的,它会自动在Spring容器中查找匹配的Bean,并将其注入到需要的地方。如果有多个匹配的Bean,它会根据变量名或者属性名进行匹配。如果找不到匹配的Bean,会抛出异常。
@Resource则是按照名称进行自动装配的,它也会自动在Spring容器中查找匹配的Bean,并将其注入到需要的地方。但是它需要指定名称,如果名称没有指定,默认使用变量名或者属性名作为Bean的名称进行查找。如果找不到匹配的Bean,也会抛出异常。
总的来说,两者的作用都是相同的,都是用于自动注入Bean。但是@Autowired比@Resource更加灵活,因为它可以按照类型进行匹配,而@Resource只能按照名称进行匹配。
阅读全文