一、@Autowired

1、@Autowired是spring自带的注解,通过‘AutowiredAnnotationBeanPostProcessor’ 类实现的依赖注入;

2、@Autowired是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Qualifier;

3、@Autowired有个属性为required,可以配置为false,如果配置为false之后,当没有找到相应bean的时候,系统不会抛错;

4、@Autowired可以作用在变量、setter方法、构造函数上。

a、将@autowored写在被注入的成员变量上,就不用再xml文件中配置了,在程序中去掉相应的setter和getter方法,

b、还可以写在构造方法上、setter方法上

c、@Qualifier

@Qualifier("XXX") 中的 XX是 Bean 的名称,所以 @Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了。

不过需要注意的是@Autowired 可以对成员变量、方法以及构造函数进行注释,而 @Qualifier 的标注对象是成员变量、方法入参、构造函数入参

二、@Inject

1、@Inject是JSR330 (Dependency Injection for Java)中的规范,需要导入javax.inject.Inject;实现注入。

2、@Inject是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Named;

3、@Inject可以作用在变量、setter方法、构造函数上。

a、将@Inject可以作用在变量、setter方法、构造函数上,和@Autowired一样

b、@Named

@Named("XXX") 中的 XX是 Bean 的名称,所以 @Inject和 @Named结合使用时,自动注入的策略就从 byType 转变成 byName 了。

三、@Resource

1、@Resource是JSR250规范的实现,需要导入javax.annotation实现注入。

2、@Resource是根据名称进行自动装配的,一般会指定一个name属性

3、@Resource可以作用在变量、setter方法上。

a、@Resource实例

 

总结:

1、@Autowired是spring自带的,@Inject是JSR330规范实现的,@Resource是JSR250规范实现的,需要导入不同的包

2、@Autowired、@Inject用法基本一样,不同的是@Autowired有一个request属性

3、@Autowired、@Inject是默认按照类型匹配的,@Resource是按照名称匹配的

4、@Autowired如果需要按照名称匹配需要和@Qualifier一起使用,@Inject和@Name一起使用

最新文章

  1. Git版本库
  2. gene框架文档 - 概述
  3. Java系列:JVM指令详解(上)(zz)
  4. SDS查看部署在集成TOMCAT服务器中的项目目录结构
  5. NET垃圾回收机制【Copy By Internet】
  6. 改进uboot,添加自定义快捷菜单
  7. [java bug记录] java.util.zip.ZipException: invalid code lengths set
  8. 丢沙包游戏(或杀人游戏)的C语言实现
  9. 如何使用 Docker、ECS、Terraform 重建基础架构?
  10. 准备踏入IT编程的学子们,你们第一门编程语言选谁? Are You Ready? Go!
  11. Speex Acoustic Echo Cancellation (AEC) 回声消除模块的使用
  12. sqlserver 清空数据 主键从1开始
  13. apache Storm 学习笔记
  14. Docker从零构建php-nginx-alpine镜像
  15. js for in 获得遍历数组索引和对象属性
  16. HTTP上传数据 :表单,二进制数据(multipart/form-data application/octet-stream boundary)
  17. 【转载】 强化学习(三)用动态规划(DP)求解
  18. scapy学习笔记(3)发送包,SYN及TCP traceroute 扫描
  19. import tkinter与from tkinter import *的区别
  20. 不要用for in语句对数组进行遍历

热门文章

  1. Python学习日志9月13日
  2. JAVASCRIPT闭包以及原型链
  3. Latex 分块矩阵的处理
  4. 解决IllegalBlockSizeException:last block incomplete in decryption异常
  5. Java中的线程--Lock和Condition实现线程同步通信
  6. 基于PassThru的NDIS中间层驱动程序扩展
  7. (25)zabbix事件通知
  8. python--MySQL 库,表的详细操作
  9. python 有4个数字1234,能组成多少个互不相同且无重复的三位数数字。
  10. 数据结构( Pyhon 语言描述 ) — —第9章:列表