@Autowired与@Resource的区分

2019-10-06 00:47 来源:未知
  1. @Autowired与@Resource都能够用来装配bean,都得以写在字段上,或写在setter方法上。
  2. @Autowired 属于Spring ;@Resource 属于JS逍客-250专门的学问的笺注,属于J2EE。
  3. @Autowired 暗中同意遵照体系装配,默许在Spring的左右文中必得有该指标存在何况唯一,不然会抛出BeanCreationException十分。如若允许 null 值,能够设置它的required 属性为false,举例:@Autowired(required=false);假设幸免出现八个一律等级次序的bean,结合@Qualifier;依据名称装配。

【Spring】4、Spring中 @Autowired标签与 @Resource标签 的区别,autowiredresource

转自:

spring不但扶助自身定义的@Autowired申明,还帮助由JSENVISION-250标准定义的多少个注解,如:@Resource、 @PostConstruct及@PreDestroy。

  1. @Autowired
        @Autowired是Spring 提供的,需导入
        Package:org.springframework.beans.factory.annotation.Autowired;
        只按照byType 注入。
  2. @Resource
        @Resource暗中认可按 byName 自动注入,是J2EE提供的, 需导入Package:  
        javax.annotation.Resource;
        @Resource有两当中器重的习性:name和type ,而Spring将@Resource注明的name属性深入分析为bean的
        名字,而type属性则分析为bean的门类。所以假如运用name属性,则应用byName的机动注入计策,而利用
        type属性时则动用 byType自动注入计策。若是既不内定name也不钦命type属性,那时将透过反射机制使用by
        Name自动注入战术。
     
        @Resource装配顺序 
      (1). 假若同临时间钦命了name和type,则从Spring上下文中找到独一相称的bean实行装配,找不到则抛出特别;
      (2). 假设钦点了name,则从左右文中查找名称(id)匹配的bean举办李装运配,找不到则抛出特别;
      (3). 假设钦定了type,则从左右文中找到类型相配的独一bean举行装配,找不到或然找到多个,都会抛出特别;
      (4). 若是既未有一点点名name,又尚未点名type,则自动遵照byName形式张开装配;若无相称,则回降为一
        个原始类型实行相配,假使相称则自动装配;
        @Resource的功能相当于@Autowired,只可是@Autowired按byType自动注入。
  3. 运用分别
        @Resource(name="loginService") 
        private LoginService loginService;
     
        @Autowired(required=false)@Qualifier("loginService") 
        private LoginService loginService;
     
       (1)[email protected] 与@Resource都足以用来装配bean. 都能够写在字段上,或写在setter方法上;
       (2)[email protected] 暗许按类型装配,暗中同意景况下必得供给依靠对象必得存在,如若要允许null值,能够设

    置它的required属性为false,如:@Autowired(required=false) .

只要大家想选拔名称装配能够组合 @Qualifier注明实行应用;

    (3)[email protected](那几个评释属于J2EE的),默许安装名称进行李装运配,名称能够通过name属性进行点名,假使没
    有钦点name属性,当表明写在字段上时,默许取字段名张开设置名称查找,假若表明写在setter方法上私下认可取属
    性名打开装配。当找不到与名称相配的bean时才依照项目进行装 配。不过急需潜心的是,如若name属性一旦指
    定,就只会安份守己名称实行装配。
 
    推荐使用@Resource评释在字段上,那样就不用写setter方法了.并且这一个表明是属于J2EE的,减少了与Spring

    的耦合,那样代码看起就比较文雅 。

除此以外,通过进行,还计算出一条规律:

只要将@requied或然@autowired写了set方法之上,则程序会走到set方法内部。

但一旦写在了田野先生之上,则不会进来set方法在那之中。

@Autowired标签与 @Resource标签 的区别,autowiredresource 转自: spring不但援助本身定...

@Autowired() @Qualifier("userService")private UserService userService;
  1. @Resource 暗中认可依照名称举行李装运配,名称能够透过name属性进行点名,若无一点名name属性,当评释写在字段上时,私下认可取字段名实行安装名称查找,如若注脚写在setter方法上暗中同意取属性名进行李装运配。当找不到与名称相称的bean时才依照种类举办装配。但是急需静心的是,假诺name属性一旦钦点,就只会依据名称举行装配。
@Resource(name="userService")private UserService userService;
TAG标签:
版权声明:本文由金沙澳门唯一官网发布于编程教学,转载请注明出处:@Autowired与@Resource的区分