平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。

依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做。Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:构造方法注入,set方法参数注入,接口注入。

一.目前使用最广泛的 @Autowired:自动装配

基于@Autowired的自动装配,默认是根据类型注入,可以用于构造器、接口、方法注入,使用方式如下:

@Autowired
构造方法、方法、接口

@Autowired默认是根据参数类型进行自动装配,且必须有一个Bean候选者注入默认required=true,如果允许出现0个Bean候选者需要设置属性“required=false”,“required”属性含义和@Required一样,只是@Required只适用于基于XML配置的setter注入方式,只能打在setting方法上。

构造器注入

通过将@Autowired注解放在构造器上来完成构造器注入,默认构造器参数通过类型自动装配,如下所示:

 public class Test1 {  private MessageInterface message;  @Autowired //构造器注入  private Test1(MessageInterface message) {  this.message = message;  } //省略getter和setter  }

接口注入

通过将@Autowired注解放在构造器上来完成接口注入。

 public class Test2 {  @Autowired //接口注入  private MessageInterface messageInterface;  //省略getter和setter
}

方法参数注入

通过将@Autowired注解放在方法上来完成方法参数注入。

 public class Test3 {  private MessageInterface message;  @Autowired //setter方法注入  public void setMessage(MessageInterface message) {  this.message = message;  }  public String getMessage() {  return message;  }
}public class Test4 {  private MessageInterface message;  //private List list;  @Autowired(required = true) //任意一个或多个参数方法注入  private void initMessage(MessageInterface message, ArrayList list) {  this.message = message;  this.list = list;  }  //省略getter和setter
} 

spring常用的三种依赖注入方式相关推荐

  1. 【闲谈】论Spring的三种依赖注入方式

    知识点科普: IOC和DI:IOC是控制反转,DI是依赖注入.DI是行为,而IOC是实现这一行为的容器. 循环依赖:指类与类之间互相依赖的情况,比如有类A和类B,类A中依赖类B,类B中依赖类A,由此导 ...

  2. DI的三种依赖注入方式和底层实现

    bean 标签来表示一个对象:id 是一个对象的唯一标识:class 是类的全路径: 为对象的属性赋值 1. 设值注入 底层实现set方法赋值 ref 引用其它对象,对象的嵌套 2. 构造注入 底层实 ...

  3. spring入门之Spring 常用的三种注入方式

    Spring 常用的三种注入方式 Spring 通过 DI(依赖注入)实现 IOC(控制反转),常用的注入方式主要有三种:构造方法注入,set 方法注入,基于注解的注入. 一.通过构造方法注入 先简单 ...

  4. spring四种依赖注入方式

    平常的java开发中,程序员在某个类中需要依赖其它类的方法,通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理. spring提出了依赖注入的思想,即依赖不由程序 ...

  5. Spring中IoC两种接口和两种依赖注入方式的比较

    spring是一个开源框架,是为了解决企业应用程序开发的复杂性而创建的,为J2EE应用程序开发提供集成的框架.简单来说,spring是一个轻量级的控制反转IOC和面向切面AOP的容器框架.spring ...

  6. ASP.NET Core应用的7种依赖注入方式

    ASP.NET Core框架中的很多核心对象都是通过依赖注入方式提供的,如用来对应用进行初始化的Startup对象.中间件对象,以及ASP.NET Core MVC应用中的Controller对象和V ...

  7. Spring常用的三种注入方式

    Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:构造方法注入,setter注入,基于注解的注入. 构造方法注入 先简单看一下测试项目的结构,用maven构建的,四个包 ...

  8. 所需依赖_注意细节,阿里架构师一文详解SpringDI的四种依赖注入方式

    SpringDI(依赖注入) 一.DI概述 Dependency Injection即为依赖注入,简称DI. 简单来说,在Spring创建对象的同时,为其属性赋值,称之为依赖注入. 形象来说,组件之间 ...

  9. 简析常用的三种绩效考核方式

    绩效考核是企业绩效管理中的一个环节,是指考核主体对照工作目标和绩效标准,采用科学的考核方式,评定员工的工作任务完成情况.员工的工作职责履行程度和员工的发展情况,并且将评定结果反馈给员工的过程. 常见的 ...

最新文章

  1. ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote...
  2. 学习进度条(第一周)
  3. 科技公司狂挖高校AI学者:涸泽而渔还是产学双赢
  4. cocos2dx在eclipse环境下集成ucsdk
  5. Linux文件存储结构,包括目录项、inode、数据块
  6. mysql怎么加全局锁_MySQL锁机制/管理(并发锁,行锁,表锁,预加锁,全局锁等等)
  7. libuv 中文编程指南(零)前言
  8. Spring Cloud学习系列第六篇【分布式配置中心】
  9. F5与Ctrl+F5及地址栏输入地址回车
  10. 【Python】校选课 第六周作业 py3.0
  11. java.lang.IllegalStateException: attempt to re-open an already-closed object
  12. 【随机】Ghd(CF364D)
  13. jpa mysql乐观锁_【快学springboot】8.JPA乐观锁OptimisticLocking
  14. html的选择字体样式代码,html 常用字体(示例代码)
  15. Openwrt_树莓派B+_Wifi中继
  16. 录音怎么转换成mp3格式?
  17. 【渝粤教育】广东开放大学 领导学基础 形成性考核 (38)
  18. Android 百度地图导航引擎初始化失败
  19. c 语言编译程序的首要工作,2017年计算机基础试题选择题「附答案」
  20. 计算最大回撤python_python 计算收益回撤比

热门文章

  1. 公司又有人被开除了,这次真的是...
  2. 最常用 150 个Linux命令汇总(建议收藏)
  3. 按摩师-总预约时间最长
  4. 图神经网络方法总结(Graph Neural Network)
  5. 解决scrapy安装失败
  6. 新视界,你好!_只愿与一人十指紧扣_新浪博客
  7. 轻松学Pytorch – 行人检测Mask-RCNN模型训练与使用
  8. 服不服?40行Python代码,实现卷积特征可视化
  9. Ret2Libc(1) (有system、/bin/sh)绕过NX、ASLR
  10. 用python解析word文件(段落篇(paragraph) 表格篇(table) 样式篇(style))