zoukankan      html  css  js  c++  java
  • Autowried注解和Resource注解的区别

    1.概述

    在使用Spring框架的过程中, 依赖注入是必须的, 大多时候会使用Autowried注解来进行依赖注入, 但是也可以使用Resource注解来实现注入.

    那么两个注解有什么区别呢? 它们又是如何使用的呢?

    2.Autowried

    用来装配bean, 可作用于字段上, 也可以作用于setter方法上.

    是Spring的注解.

    默认情况下要求对象必须存在, 它要求依赖对象必须存在. 若允许null值, 可以设置它的required为false.

    默认按照类型进行装配注入. 如果想按照名称进行装配的话, 需要与Qualifer注解搭配使用.

    @Autowried
    @Qualifier("admin")
    private AdminDAO adminDAO;
    

    3.Resource

    用来装配bean, 可作用于字段上, 也可以作用于setter方法上.

    是J2EE的注解.

    默认按照名称来装配注入, 只有找不到与名称匹配的bean才会按照类型来注入.

    它有两个属性是比较重要的:

    • name: Spring将name的属性值解析为bean的名称, 使用byName的自动注入策略
    • type: Spring将type的属性值解析为bean的类型, 使用byType的自动注入策略
      如果既不指定name属性又不指定type属性, Spring这时通过反射机制使用byName自动注入策略

    Resource注解的装配顺序

    • 如果同时指定了name属性和type属性, 那么Spring将从容器中找唯一匹配的bean进行装配, 找不到则抛出异常
    • 如果指定了name属性值, 则从容器中查找名称匹配的bean进行装配, 找不到则抛出异常
    • 如果指定了type属性值, 则从容器中查找类型匹配的唯一的bean进行装配, 找不到或者找到多个都会抛出异常
    • 如果都不指定, 则会自动按照byName方式进行装配, 如果没有匹配, 则回退一个原始类型进行匹配, 如果匹配则自动装配

    4.总结

    Resource注解是J2EE提供的, 而Autowried注解是Spring提供的, 如果想减少对Spring的依赖建议使用Resource注解.

    其实也没必要, Spring框架目前大部分应用都使用着, 使用Spring的注解也没什么不好.

    不过我个人喜欢使用Resource注解.

  • 相关阅读:
    X Apex 忘记internal密码
    X ORA-27303: additional information: startup egid = 202 (?), current egid = 101 (dba)
    X 高效查看MySQL帮助文档的方法
    X mysql高可用之MHA--邮件报警
    X MHA高可用配置及故障切换——详细部署步骤及报错解决办法
    X linux 配置发送邮件的功能
    RESTFUL(javax.ws.rs-api)
    nginx及基本原理
    nginx中的location匹配规则
    Linux网络(TCP/IP)
  • 原文地址:https://www.cnblogs.com/wuqinglong/p/10155280.html
Copyright © 2011-2022 走看看