• @Autowired与@Resource的区别



    二者所属包

    @Resource:javax.annotation.Resource j2ee

    @Autowired:org.springframework.beans.factory.annotation.Autowired Spring

     

    区别

    1. @Autowired默认按类型装配,@Resource默认安照名称进行装配。
    • @Autowired默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:

      @Autowired(required=false) 
      

      如果我们想使用名称装配,可以结合@Qualifier注解进行使用。

      @Autowired() @Qualifier("Dao") 
      private Dao Dao;     
      
    • @Resource的名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找。如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。

     

    相同

    @Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上

     

    实践总结

    1. 用 @Resource注解在字段上,可不用写setter方法了,因为J2EE的内部注解解析器已经会自动完成setter的功能。而目前@Autowired不行。
    2. 可减少与spring的耦合。

     

    ----------------------------------unfinished----------------------------------

  • 相关阅读:
    Mysql 主备原理
    Mysql-innodb日志写入时机
    Innodb 架构
    Reactor/Proactor
    select,poll,epoll,IO多路复用进化史
    从硬件+操作系统的角度解释为什么操作系统的IO单位是磁盘块
    Dubbo 核心功能在业务架构中的体现
    Mysql-Innodb 锁总结
    第一阶段冲刺三
    第一阶段冲刺二
  • 原文地址:https://www.cnblogs.com/haore147/p/4688517.html
Copyright © 2020-2023  润新知