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注解.

  • 相关阅读:
    java错误分析之junit测试错误(实验一)
    oracle逐步学习总结之oracle分页查询(基础三)
    OracleServer总结进阶之系统分析(进阶完结)
    QMS 的趨勢概述
    Python 類別 class 的繼承 Inheritance
    Python 面向導向語言 Object Oriented Programming Language
    Python 參考資源
    Dynamics 365-CRM又报看不懂的错误了
    Dynamics 365-为什么查到的Record的Id是Guid初始值
    Dynamics 365-如何下载新版本的Tools
  • 原文地址:https://www.cnblogs.com/wuqinglong/p/10155280.html
Copyright © 2011-2022 走看看