栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

@Autowftred和@Resource

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

@Autowftred和@Resource

@Resource和@Autowired注解都是用来实现依赖注入的。只是@AutoWried按by type自动注入,而@Resource默认按byName自动注入。

@Autowftred

直接在属性上使用即可!也可以在set方式上使用!!
使用Autowired 我们可以不用编写Set方法了,前提是你这个自动装配的属性在IOC (Spring)容器中存在,且符合名字byname!

    //如果显示定义了Autowired的required属性为false,
    //说明这个对象可以为null,否则不允许为空
    @Autowired(required = false)
    private Cat cat;

    //如果@Autowired自动装配的环境比较复杂,
    //自动装配无法通过一个注解【@Autowired】完成的时候、
    //我们可以使用@Qualifier(value="xxx")去配置@Autowired的使用,
    //指定一个唯一的bean对象注入!
    @Autowired
    @Qualifier(value = "dog1")
    private Dog dog;

@Autowftred优先byType,如果类型无法匹配就找和属性名一致的名字(byName),找不到就报错,
如果同时配置了@Quralifern("XXX"),就去寻找配置的这个值,找不到就报错,注意,这个时候会屏蔽掉按类型匹配的方式(即使一个类型只有一个bean也无法正常运行)

@Resource

pub1ic class People {
    @Resource(name = "cat2")
    private cat cat;
    @Resource
    private Dog dog;
}

 @Resource装配顺序
  1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
  2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
  3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
  4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;

@Resource优先byName,如果找不到会尝试byType,如果无法匹配到唯一的类型,就报错
在@Resource中使用了name属性之后,就去寻找配置的这个值,注意,这个时候会屏蔽掉按类型匹配的方式(即使一个类型只有一个bean也无法正常运行)

小结:
@Resource和@Autowired的区别:
        ·都是用来自动装配的,都可以放在属性字段上
        .@Autowired通过byType的方式实现,而且必须要求这个对象存在!【常用】
        .@Resource默认通过byname的方式实现,如果找不到名字,则通过byType实现!如果两个都找不到的情况下,就报错!【常用】
        ·执行顺序不同:@Autowired通过byType的方式实现。@Resource默认通过byname的方式实现。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/711525.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号