@Resource 注解的作用【和@AutoWired的对比】

今天看到一段代码使用的是 @Resource 的注解,的确是第一次看到这个注解,百度一查才知道,原来和 @AutoWired效果一样,但也有一定的区别。

两个注解都可以用来注入 bean ,@Resource 是JavaEE的注解,@AutoWired是Spring的注解,他俩写的地方是一样的,要么属性名上,要么 setter方法上,但是注入的依据有点不同 :

1 . @AutoWired 默认是按照类型进行装配的,而且要求被注入的 bean 必须存在,如果允许不存在的话,必须加上 required = false 的属性,如:

@AutoWired(required=false)
private UserDao userDaoImpl;

如果想要根据 bean 的 name 来进行装配,则需要指定 @Qualifier(“bean名字”),如:

@AutoWired
@Qualifier("userDaoImpl")
private UserDao userDaoImpl;

2 . @Resource 默认是按照名字进行装配的,不指定 bean 名字时会自动根据属性名进行注入,当找不到默认的名字的bean时就会根据类型去注入;但是如果指定了 name 属性,则按照指定的 bean 的 name进行注入,不会再根据类型去注入了,如:

//默认按属性名注入
@Resource
private UserDao userDaoImpl;

//按照指定的 bean的 name注入
@Resource(name="userDaoImpl")
private UserDao userDaoImpl;
时间: 2024-10-09 18:52:18

@Resource 注解的作用【和@AutoWired的对比】的相关文章

Spring 与 @Resource注解

Spring 中支持@Autowired注解,能够实现bean的注入.同时,Spring 也支持@Resource注解,它和@Autowired类似,都是实现bean的注入.该注解存在javax.annotation.Resource包中. 使用方法如下: 1 import javax.annotation.Resource; 2 public class A{ 3 4 @Resource 5 private B b; 6 7 } 其中@Resource有两个参数会在spring配置中进行准确的

Spring注解@Resource和@Autowired区别对比

@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入. 1.共同点 两者都可以写在字段和setter方法上.两者如果都写在字段上,那么就不需要再写setter方法. 2.不同点 (1)@Autowired @Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.an

Spring中@Autowired注解、@Resource注解的区别(转)

标签: Autowired Resource Spring(3)  Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@PostConstruct以及@PreDestroy. @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了.@Resource有两个属性是比较重要的,分是name和type,Spring将@Reso

Spring5:@Autowired注解、@Resource注解和@Service注解

什么是注解 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件,那么.xml文件又会非常多.总之这将导致配置文件的可读性与可维护性变得很低 2.在开发中在.java文件和.xml文件之间不断切换,是一件麻烦的事,同时这种思维上的不连贯也会降低开发的效率 为了解决这两个问题,Spring引入了注解,通过"@XXX"的方式,让注解与Java

Spring中@Autowired注解、@Resource注解的区别

Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@PostConstruct以及@PreDestroy. @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了.@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析

[spring]@Resource和@Autowired区别对比

@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入. 1.共同点 两者都可以写在字段和setter方法上.两者如果都写在字段上,那么就不需要再写setter方法. 2.不同点 (1)@Autowired @Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.an

spring装配之 @Autowired 和 @Resource 注解的区别

@Autowired @Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired.@Autowired采取的策略为按照类型注入. @Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@

@Autowired和@Resource注解的区别?

谈到Spring的注解,@Autowired和@resource这两个注解不得不提.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上 那@Autowired和@resource注解的区别是什么? [email protected]是spring的注解,它的jar包在import org.springframework.beans.factory.annotation.Autowired.而@resource是属于java的,它的jar包

关于@Autowired和@Resource注解区别

区分一下@Autowired和@Resource两个注解的区别: 1.@Autowired默认按照byType方式进行bean匹配,@Resource默认按照byName方式进行bean匹配 2.@Autowired是Spring的注解,@Resource是J2EE的注解,这个看一下导入注解的时候这两个注解的包名就一清二楚了 Spring属于第三方的,J2EE是Java自己的东西,因此,建议使用@Resource注解,以减少代码和Spring之间的耦合. @Service("StudentSer