持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第26天,点击查看活动详情
之前我们提到过,有多种方式可以让被注入对象通知IOC Service Provider 为其注入相应的依赖。
但是我们需要转念想一想,如果通知到了IOC Service Provider 之后,它是否一定能够领会到被注入对象的意图呢?同时它是否可以有效准确地为被注入对象提供其所需的依赖呢?
有些时候,可能并不是像我们想的一样,所以这个时候就需要想办法,如何让IOC Service Provider 为被注入对象准确地提供其所需的依赖。
说直白一些,就是要找方法,来记录诸多对象之间的对应依赖关系。
- 可以通过文本文件
- 通过xml 文件
- 通过coding
- 通过语音
- ......
对于IOC Serivce Provider 管理对象之间的依赖关系的实现有很多种方法,这里我们来逐个介绍。
管理对象之间依赖关系的方法
直接编码方式
直接编码方式就是通过程序中编写代码的方法将被注入对象和被依赖对象注册到IOC 容器中,同时通过编写代码,明确它们之间的依赖关系。
这样就可以为相应的类指定具体的实例,并告知IOC 容器,当某个被注入对象需要某个类型的被依赖对象的时候,请把容器中写明的对象实例返回给它。
配置文件方式
配置文件方式是一种比较普遍使用的依赖注入关系管理的方式。常见的文本格式的文件,都可以作为配置文件使。,如properties 文件、XML 文件等等,都可以作为依赖关系的载体。
最常用的还是XML 格式文件,通过XML 文件来管理对象注册和对象之间的依赖关系,看起来也比较清晰,使用起来也比较方便。
元数据方式
元数据其实就是“描述数据的数据”。
这其实就是一套基于注解和Generic 的一套IOC 框架。我们可以直接使用元数据的方式来标注各个对象之间的依赖关系,组装完成后,然后将其交还给客户端进行使用。
总结
这几篇文章其实主要介绍的是IOC Service Provider 的相关概念。开始的时候介绍了IOC Service Provider 的职责,然后介绍IOC Service Provider 是如何管理各个对象之间的依赖关系的。
同时我们要明确一个观点,IOC Service Provider 只是一个抽象的概念,为了简化IOC 而提出的。
实现IOC 有很多中方式,不同的框架或者说不同的需求有不同的做法,我们后续会继续由浅入深地介绍这些概念。