zoukankan      html  css  js  c++  java
  • @Autowired和@Resource的区别是什么?

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

    2、@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:
    @Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:
    @Autowired() 
    @Qualifier("baseDao")    
    private BaseDao baseDao;
    3、@Resource 是JDK1.6支持的注解默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名,按照名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
    只不过注解处理器我们使用的是Spring提供的,是一样的,无所谓解耦不解耦的说法,两个在便利程度上是等同的。
    @Resource(name="baseDao")    
    private BaseDao baseDao;
    他们的主要区别就是@Autowired是默认按照类型装配的 @Resource默认是按照名称装配的
    byName 通过参数名 自动装配,如果一个bean的name 和另外一个bean的 property 相同,就自动装配。
    byType 通过参数的数据类型自动自动装配,如果一个bean的数据类型和另外一个bean的property属性的数据类型兼容,就自动装配。
    我们可以通过 @Autowired 或 @Resource 在 Bean 类中使用自动注入功能,但是 Bean 还是在 XML 文件中通过 <bean> 进行定义 —— 也就是说,在 XML 配置文件中定义 Bean,通过@Autowired 或 @Resource 为 Bean 的成员变量、方法入参或构造函数入参提供自动注入的功能。
     
  • 相关阅读:
    HDU 4462 DFS
    HorizontalScrollView的使用演示样例
    编程之美读书笔记1.1——让CPU占用率曲线听你的指挥
    flume 日志导入elasticsearch
    2、COCOS2D-X内存管理机制
    cocos2d js ScrollView的使用方法
    程序中涉及到时间的相关问题
    【转】Android的onCreateOptionsMenu()创建菜单Menu详解
    【转】Android 菜单(OptionMenu)大全 建立你自己的菜单--不错
    【转】onPrepareOptionsMenu 和onCreateOptionsMenu 的区别
  • 原文地址:https://www.cnblogs.com/jasontec/p/9604500.html
Copyright © 2011-2022 走看看