版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、依赖注入(I简介依赖注入背后的基本原理是对象之间的依赖关系可以通过以下几种方式来实现:构造器的参数、工厂方法的参数,或给由构造函数或者工厂方法创建的对象设置属性。因此,容器的工作就是创建时注入那些依赖关系。相对于由自己来控制其实例化、直接在构造器中指定依赖关系或者类似服务定位器模式这3种自主控制依赖关系注入的方法来说,控制从根本上发生了倒转,这也正是控制反转名字的由来。依赖注入主要有两种注入方式,即构造器注入和注入。二、构造器注入基于构造器的依赖注入是通过调用带参数的构造器来实现,每个参数代表着一个依赖。下面展示了用构造器参数来注入依赖关系的例子。先创建一个对象代码_需要/一/个默认无参构
2、造器,实例化再修改配置文件代码星最后测试是否能够得到注入的,并打印出对象的属性。代码_读取配/置/文件,获得三、注入通过调用无参构造器或无参工厂方法实例化之后,调用该的方法,即可实现基于的依赖注入。创建一个对象代码门修改配置文件C实例化代码-测试类,获得注入的代码-读取配置文件,实例化容器处理依赖关系通常按以下步骤进行:根据定义的配置创建并初始化实例每个的依赖将以属性、构造器参数、或静态工厂方法参数的形式出现。当这些被实际创建时,这些依赖也将会提供给该。每个属性或构造器参数既可以是一个实际的值,也可以是对该容器中另一个的引用。每个指定的属性或构造器参数值必须能够被转换成特定的格式或构造参数所需
3、的类型。会在容器被创建时验证容器中每个的配置,包括验证那些所引用的属性是否指向一个有效的。在被实际创建之前,的属性并不会被设置。伴随着被实际创建,作为该的依赖以及依赖的依赖也将被创建和分配。依赖注入的3种实现方式分别是:接口注入(interfaceinjection)、Set注入(setterinjection)和构造注入(constructorinjection)。接下来笔者还将主要通过举例的方式,把依赖注入的3种实现方式介绍给读者。接口注入(interfaceinjection)接口注入指的就是在接口中定义要注入的信息,并通过接口完成注入。结合前面的示例,其具体步骤如下。编写一个接口IBu
4、siness,各种数据库的注入将通过这个接口进行。IBusiness.java的示例代码如下:/*IBusiness.java*publicinterfaceIBusinesspublicvoidcreateDI(DataBasedb);任何想要使用数据库实例的类都必须实现这个接口,业务逻辑类Business实现这个接口IBusiness。Business.java的示例代码如下:/*Business.java*publicclassBusinessimplementIBusinessprivateDataBasedb;publicvoidcreateDI(DataBasedb)this.db
5、=db;根据注入的数据库类,从XXX数据库中获取数据publicvoidgetData()db.getData();(3)编写测试类TestBusiness。TestBusiness.java的示例代码如下:/*TestBusiness.java*publicclassTestBusinessprivateBusinessbusiness=newBusiness();/根据注入的数据库类,从Oracle数据库中获取数据publicvoidgetData()business.createDI(newOracleDataBase();business.getData();如果要完成依赖关系注入的对
6、象,必须实现IBusiness接口。Set注入(setterinjection)Set注入指的就是在接受注入的类中定义一个Set方法,并在参数中定义需要注入的元素。为了让类Business接受DataBase的注入,需要为它定义一个Set方法来接受DataBase的注入。Business.java的示例代码如下:/*Business.java*publicclassBusinessprivateDataBasedb;publicvoidsetDataBase(DataBasedb)this.db=db;/根据注入的数据库类,从XXX数据库中获取数据publicvoidgetData()db.getData();更详细的代码,可以参看3.1节的第二个例子,采用的就是Set注入的方式。构造注入(constructorinjection)构造注入指的就是在接受注入的类中定义一个构造方法,并在参数中定义需要注入的元素。为了让类Business接受DataBase的注入,需要为它定义一个构造方法,来接受DataBase的注入。Business.java的示例代码如下:/*Business.java*publicclassBusinesspriv
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 蛋白质动力学的温控调控-洞察与解读
- 运动动机理论应用-洞察与解读
- 自组装纳米像素阵列-洞察与解读
- 虚拟影棚技术-洞察与解读
- 智能家居市场竞争格局研究-洞察与解读
- 2026年医院空气净化管理规范问答
- 2026年网格员发现辍学儿童劝返复学与上报测试
- 2026年面试中的个人形象塑造建议
- 2026年输血科血液储存与感染风险防控题库
- 2026年中国国家电投集团校园招聘面试预测题库
- 会计研究方法论 第4版 课件全套 吴溪 第1-20章 导论- 中国会计学术研究成果的国际发表
- 智慧树知到《形势与政策(北京大学)》2025春期末答案
- 2025冠心病流行病学调查报告:区域差异与挑战
- DB22-T 389.4-2025 用水定额 第4部分:居民生活
- 曲妥珠单抗心脏毒性的管理
- 贵州中医药大学时珍学院《C#程序语言设计》2023-2024学年第一学期期末试卷
- 法院委托评估价格异议申请书
- 卫生事业管理学:第十一章 社会健康资源管理
- 电工二级技师试题及答案
- DL-T5706-2014火力发电工程施工组织设计导则
- 杆上变压器安装施工方案
评论
0/150
提交评论