zoukankan      html  css  js  c++  java
  • @Resource 注解的作用【和 @Autowired 的对比】

    今天看到一段代码使用的是 @Resource 的注解,的确是第一次看到这个注解,百度一查才知道,原来和 @Autowired 效果一样,但也有一定的区别。

          两个注解都可以用来注入 bean ,@Resource 是 JavaEE 的注解,@Autowired是Spring的注解,他俩都可以写在属性名上, setter方法上,@Autowired 还可以写在普通方法上,构造器上,而且两者注入的依据有点不同 :

    1 . @Autowired 默认是按照类型进行装配的,而且默认要求被注入的 bean 必须存在,如果允许不存在的话,必须加上 required = false 的属性,(如果被类型匹配上的 Bean 有多个,会报异常,解决方案可以使用 @Primary 注解 , 或者指定 Bean 的名字)如:

    @Autowired(required=false)
    private UserDao userDaoImpl;

    如果想要根据 bean 的 name 来进行装配,则需要指定 @Qualifier(“bean名字”),如:

    @Autowired
    @Qualifier("userDaoImpl")
    private UserDao userDaoImpl;

    但是如果需要使用 @Autowired 和 @Qualifier 两个注解来注入 Bean , 还不如使用下面的 @Resurce 呢 .

    2 . @Resource 默认是按照名字进行装配的,不指定 bean 名字时会自动根据属性名进行注入,当找不到默认的名字的bean时就会根据类型去注入;但是如果指定了 name 属性,则按照指定的 bean 的 name进行注入,不会再根据类型去注入了,如:

    //默认按属性名注入
    @Resource
    private UserDao userDaoImpl;
    
    
    //按照指定的 bean的 name注入
    @Resource(name="userDaoImpl")
    private UserDao userDaoImpl

           后来我又看到了一个用于注入 Bean 的注解 , @Inject , 它是 JSR-330 提供的注解 , 这个注解在 Struts2 中使用的比较多 , 使用方法和 @Autowired 差不多 , 也是按照类型进行注入的 .

     

    1

  • 相关阅读:
    什么是 canvas(画布)?
    JavaScript
    JavaScript函数
    JavaScript事件
    JavaScript获取元素
    文件拷贝——高淇JAVA300讲笔记之IO和File
    读取与写出文件——高淇JAVA300讲笔记之IO和File
    File类的常用方法2——高淇JAVA300讲笔记之IO和File
    File类的常用方法1——高淇JAVA300讲笔记之IO和File
    路径常量,绝对路径与相对路径,构造File对象——高淇JAVA300讲笔记之IO和File
  • 原文地址:https://www.cnblogs.com/daimajun/p/7150075.html
Copyright © 2011-2022 走看看