最开始做项目时,依赖注入用到的注解都是 J2EE 的 @Resource,那时还根本不了解 spring 有 @Autowired。心塞。

前两天想到估计有很多刚开始学习 java 的童鞋可能对这两个注解并没有注意区分,那我就在这总结一下吧。当然很多都是 copy 自网络。

相同点:

  1. 都是用来装配 Bean,都可以写在字段上,或者写在 setter 方法上。

不同点:

  @Autowired

  1. 默认按类型装配。

  2. 默认情况下必须要求对象存在,如果允许 Null 值,可是设置 requried 属性为 false 。如下:

@Autowired(required = false) 

  3. 如果想改为按名称匹配,需要结合 @Qualifier 注解使用。如下:

@Autowired
@Qualifier("baseDao")
private BaseDao baseDao;
  
  @Resource

  1. 默认按照名称装配,且默认按字段名查找。

  2. 如指定 name 属性,则按照指定的 name 值查找。如下:

@Resource("dao")
private BaseDao baseDao;

  3. 在不指定 name 值的前提下,按名称搜不到匹配的 bean 时,会自动改为按类型匹配。

spring 框架的 @Autowired 和 @Resource 两种注解的区别的更多相关文章

  1. Spring中@Autowired和@Resource两种自动装配的方法

    @Autowired 默认按bean类型查找并注入,若此时有多个相同类型的bean时,按bean name查找则为:@Autowired @Qulifer(value=”bean名称”). @Reso ...

  2. Spring加载properties文件的两种方式

    在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可, ...

  3. Spring Boot定义系统启动任务的两种方式

    Spring Boot定义系统启动任务的两种方式 概述 如果涉及到系统任务,例如在项目启动阶段要做一些数据初始化操作,这些操作有一个共同的特点,只在项目启动时进行,以后都不再执行,这里,容易想到web ...

  4. Java中serialVersionUID的解释及两种生成方式的区别(转载)

    转载自:http://blog.csdn.net/xuanxiaochuan/article/details/25052057 serialVersionUID作用:        序列化时为了保持版 ...

  5. jsp中两种include的区别【转】

    引用文章:http://www.ibm.com/developerworks/cn/java/j-jsp04293/ http://www.cnblogs.com/lazycoding/archive ...

  6. UIImage两种初始化的区别

    UIImage可以通过以下两种方式进行初始化: //第一种初始化方式:[注意使用这种初始化的时候如果是png格式的可以不给后缀名,根据屏幕的的分辨率去匹配图片] UIImage *image = [U ...

  7. PHP中数组合并的两种方法及区别介绍

    PHP数组合并两种方法及区别 如果是关联数组,如下: 复制代码代码如下: $a = array( 'where' => 'uid=1', 'order' => 'uid', ); $b = ...

  8. Android小项目之九 两种上下文的区别

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...

  9. ACE_linux:Reactor与Proactor两种模式的区别

    一.概念: Reactor与Proactor两种模式的区别.这里我们只关注read操作,因为write操作也是差不多的.下面是Reactor的做法: 某个事件处理器宣称它对某个socket上的读事件很 ...

随机推荐

  1. Flexslider图片轮播、文字图片相结合滑动切换效果

    Flexslider是一款基于的jQuery内容滚动插件.它能让你轻松的创建内容滚动的效果,具有非常高的可定制性.开发者可以使用Flexslider轻松创建各种图片轮播效果.焦点图效果.图文混排滚动效 ...

  2. centos7 crontab笔记

    1.crontab相关命令 语法:crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr] 参数: -e 编辑该用户的计时器设 ...

  3. 【Python之路】第七篇--Python基础之面向对象及相关

    面向对象基础 基础内容介绍详见一下两篇博文: 面向对象初级篇 面向对象进阶篇 其他相关 一.isinstance(obj, cls) 检查obj是否是类 cls 的对象 class Foo(objec ...

  4. child_process小解

    js是一种单进程单线程的语言,但现行的cpu都是多核的,为了解决单进程单线程对多核使用不足的问题,child_process应运而生,理想情况下每个进程各自利用一个内核. 主要有四种方法来创建子进程, ...

  5. jquery点击选中,再次点击取消选中

    if(!$(this).hasClass("current")){ $(this).addClass("current"); }else{ $(this).re ...

  6. LWP::UserAgent介绍3 -> cookie设置

    use LWP::UserAgent; use HTTP::Cookies; my $ua = LWP::UserAgent->new; $ua->cookie_jar(HTTP::Coo ...

  7. FireFox的配置文件的引用

    1.firefox的配置文件的实际路径:C:\Users\Administrator\AppData\Roaming\Mozilla\Firefox\Profiles\oviavula.default ...

  8. 转: Executor类

    Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,Completion ...

  9. Winform制作圆弧panel

    原理就是手动去画边框留出四个角 然后绘制四张圆弧的图片到panel上 public class ArcPanel : Panel { protected override void OnPaint(P ...

  10. 郑州尚学堂:如何看待ARM的各种模式?

    嵌入式设备已经越来越与我们的日常生活密切相关了,由此带来了ARM的高速发展.就拿我们的手机来说吧,几乎所有的手机都是ARM体系的.这里大致介绍下ARM 的7种执行模式. ARMv4以上版本的CPU任何 ...