单元测试 applicationinfomanager bean无法注入_依赖注入(IOC/DI)

2ea12b7f7890e8387f1b7a4dfab160ec.png

什么是 IOC、DI?

IOC(Inversion of Control)即“控制反转”,不是什么技术,而是一种设计思想。DI(Dependency Injection)即“依赖注入”,它们是同一个概念的不同角度描述。

IOC 是对象定义其依赖的过程,定义的方式仅能通过构造参数、工厂方法参数,或者是对象被构造成从工厂方法返回之后设定在对象实例上的属性。然后由 IOC 容器在创建 bean 时将这些依赖注入。

IOC/DI 的好处

使用 DI 原则代码会更加干净,当对象具有依赖关系时,解耦更加有效,对象不查找其依赖项,也不知道其依赖项的位置或类。因此类变得更加容易测试,特别是当依赖项是接口或抽象基类时。这些接口或抽象类允许在单元测试中使用 sub 或 mock implemenation。

IOC 容器

org.springframework.context.ApplicationContext

ApplicationContext 接口代表 Spring IOC Container, 并且负责实例化、配置、装配 bean。容器通过读取配置文件元数据获取指令,决定哪个对象被实例化、配置、与装配。

接口说明:给一个应用提供配置的中心化接口,当应用在运行时为只读,但是如果实现类支持也可能被重新加载。

一个 ApplicationContext 提供了: 1. 获取应用组件的 bean 工厂方法(通过继承 ListableBeanFactory) 2. 以通用的方式加载文件的能力(通过继承 ResourceLoader) 3. 发布事件到注册监听器的能力(通过继承 ApplicationEventPublisher) 4. 解析消息、支持国际化的能力(通过继承 MessageSource) 5. 从父 context 继承;子 context 的定义总是优先考虑。也就是说,例如一个单独的父 context 可以被整个 web application 使用,每个servlet 拥有其子 context, 并且子 context 与其他 servlet 相互独立。

IOC Container 架构

3e9b17ad5060b4dc941195d74f3becf1.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值