spring常用的三种依赖注入方式
平常的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常用的三种依赖注入方式相关推荐
- 【闲谈】论Spring的三种依赖注入方式
知识点科普: IOC和DI:IOC是控制反转,DI是依赖注入.DI是行为,而IOC是实现这一行为的容器. 循环依赖:指类与类之间互相依赖的情况,比如有类A和类B,类A中依赖类B,类B中依赖类A,由此导 ...
- DI的三种依赖注入方式和底层实现
bean 标签来表示一个对象:id 是一个对象的唯一标识:class 是类的全路径: 为对象的属性赋值 1. 设值注入 底层实现set方法赋值 ref 引用其它对象,对象的嵌套 2. 构造注入 底层实 ...
- spring入门之Spring 常用的三种注入方式
Spring 常用的三种注入方式 Spring 通过 DI(依赖注入)实现 IOC(控制反转),常用的注入方式主要有三种:构造方法注入,set 方法注入,基于注解的注入. 一.通过构造方法注入 先简单 ...
- spring四种依赖注入方式
平常的java开发中,程序员在某个类中需要依赖其它类的方法,通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理. spring提出了依赖注入的思想,即依赖不由程序 ...
- Spring中IoC两种接口和两种依赖注入方式的比较
spring是一个开源框架,是为了解决企业应用程序开发的复杂性而创建的,为J2EE应用程序开发提供集成的框架.简单来说,spring是一个轻量级的控制反转IOC和面向切面AOP的容器框架.spring ...
- ASP.NET Core应用的7种依赖注入方式
ASP.NET Core框架中的很多核心对象都是通过依赖注入方式提供的,如用来对应用进行初始化的Startup对象.中间件对象,以及ASP.NET Core MVC应用中的Controller对象和V ...
- Spring常用的三种注入方式
Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:构造方法注入,setter注入,基于注解的注入. 构造方法注入 先简单看一下测试项目的结构,用maven构建的,四个包 ...
- 所需依赖_注意细节,阿里架构师一文详解SpringDI的四种依赖注入方式
SpringDI(依赖注入) 一.DI概述 Dependency Injection即为依赖注入,简称DI. 简单来说,在Spring创建对象的同时,为其属性赋值,称之为依赖注入. 形象来说,组件之间 ...
- 简析常用的三种绩效考核方式
绩效考核是企业绩效管理中的一个环节,是指考核主体对照工作目标和绩效标准,采用科学的考核方式,评定员工的工作任务完成情况.员工的工作职责履行程度和员工的发展情况,并且将评定结果反馈给员工的过程. 常见的 ...
最新文章
- ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote...
- 学习进度条(第一周)
- 科技公司狂挖高校AI学者:涸泽而渔还是产学双赢
- cocos2dx在eclipse环境下集成ucsdk
- Linux文件存储结构,包括目录项、inode、数据块
- mysql怎么加全局锁_MySQL锁机制/管理(并发锁,行锁,表锁,预加锁,全局锁等等)
- libuv 中文编程指南(零)前言
- Spring Cloud学习系列第六篇【分布式配置中心】
- F5与Ctrl+F5及地址栏输入地址回车
- 【Python】校选课 第六周作业 py3.0
- java.lang.IllegalStateException: attempt to re-open an already-closed object
- 【随机】Ghd(CF364D)
- jpa mysql乐观锁_【快学springboot】8.JPA乐观锁OptimisticLocking
- html的选择字体样式代码,html 常用字体(示例代码)
- Openwrt_树莓派B+_Wifi中继
- 录音怎么转换成mp3格式?
- 【渝粤教育】广东开放大学 领导学基础 形成性考核 (38)
- Android 百度地图导航引擎初始化失败
- c 语言编译程序的首要工作,2017年计算机基础试题选择题「附答案」
- 计算最大回撤python_python 计算收益回撤比
热门文章
- 公司又有人被开除了,这次真的是...
- 最常用 150 个Linux命令汇总(建议收藏)
- 按摩师-总预约时间最长
- 图神经网络方法总结(Graph Neural Network)
- 解决scrapy安装失败
- 新视界,你好!_只愿与一人十指紧扣_新浪博客
- 轻松学Pytorch – 行人检测Mask-RCNN模型训练与使用
- 服不服?40行Python代码,实现卷积特征可视化
- Ret2Libc(1) (有system、/bin/sh)绕过NX、ASLR
- 用python解析word文件(段落篇(paragraph) 表格篇(table) 样式篇(style))