前一章 ioc基础(视图,资源,assert注入)-dhroid文档
下面到了接口对象的注入了解冻吧,现在才是我们的重点,这才是ioc的核心思想,上面的都是android的辅助
1.5 对象依赖问题
我们先来将一下对象对象依赖的重要性,很多同学可能只学了android没学过javaee ,跟没听过spring的强大
例如中我们dhroid库的dhnet网络模块中在网络加载时自动显示对话框,但是我们不能用默认的对话框,到了真正的项目框基本中是需要定制的
我们库中有不知道对话框长什么样,但是又要用
这时我们可以面向接口编程我们定义一个接口IDialog
public interface IDialog { public abstract void showToastShort(Context context, String s); public abstract Dialog showDialog(Context context, String s, String s1, DialogCallBack dialogcallback); public abstract Dialog showDialog(Context context, int i, String s, String s1, DialogCallBack dialogcallback); //等一些调用方法... }
这时候就可以用了我在需要用对话框的地方像下面一样
//编码获取 IDialog d=IocContainer.getShare().get(IDialog.class); //或者在属性在加注解 @Inject IDialog dialoger;
这样我们就可以拿到IDIalog 的实现类,当然这个还是需要配置的
下面是写在application中的配置DialogImpl.class就是我们的具体实现类
//配置对话框对象,这是接口配置写法 //项目中可以自己写对话框对象,然后在这进行配置,这里使用的是提供的默认配置 IocContainer.getShare().bind(DialogImpl.class).to(IDialog.class) //这是单例 .scope(InstanceScope.SCOPE_SINGLETON);
上面将DialogImpl.class绑定到了IDialog.class设置作用域为InstanceScope.SCOPE_SINGLETON,(DialogImpl.class是个默认实现)
下面来讲IocContainer的知识
使用ioc需要先在application初始化
//IOC的初始化
IocContainer.getShare().initApplication(this);
然后
IocContainer.getShare().bind(具体实现类).to(目标类或借口) //这是单例 .scope(作用域)
绑定到接口不在累赘了,上面已是一个很好的例子
下面看下如何绑定到对象类上
Class A{ public void test(){ } } Class AA extend A{ public void test(){ } } //配置 IocContainer.getShare().bind(AA.class) .to(A.class) .scope(InstanceScope.SCOPE_SINGLETON); //这样后如果调用 A aa=IocContainer.getShare().get(A.class) //或者 @Inject A aa; //拿到的对象是AA的实类,而不是A的实例很神奇吧
下面说下对象的作用域
InstanceScope.SCOPE_SINGLETON 单例(也可用于多例后面讲)
InstanceScope.SCOPE_PROTOTYPE 原型
单例大家应该都等,很经典的设计模式,
就是说IocContainer.getShare().get(A.class)拿出的永远都是同一个对象
而原型 只每次调用IocContainer.getShare().get(A.class)时哪出的都是一个新对象,
前面说到多例在配置时作用域也是InstanceScope.SCOPE_SINGLETON,多例只存在多个这样的对象你可以拿其中固定的一个对象
var atag1=IocContainer.getShare().get(A.class,"tag1");//拿出的都是被标志位tag1的对象,如果不存在会创建新的 var atag2=IocContainer.getShare().get(A.class,"tag2");//拿出的都是被标志位tag2的对象
上面就存在标志为tag1和tag2的两个对象
还没有完,下面才是难点
我们说个dhroid可以解除对象依赖,dhroid不仅可以在Activity可以注入在类中也可以
看下面例子
class A implements InjectFields{ @Inject public B b; @Override public void injected() { //这时候注入的属性已经有值了 if( b.a!=null){ Log.v("DH-INFO", "这是日志"); } } } A a=IocContainer.getShare().get(A.class);上面的拿到的A中属性已经被赋值了
相关推荐
Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- IOC容器 ---- 代码 Spring5 框架 ---- ...
Ioc模式解析 - JAVA - 技术天地 - 赛迪网.htm
Spring Ioc 源码分析系列--自动注入循环依赖的处理 本篇文章主要讲解了 Spring Ioc 源码分析系列中自动注入循环依赖的处理机制。循环依赖是 Spring 框架中一个经典的问题,也是面试中常被问到的问题。本篇文章将...
Spring Ioc源码分析系列--@Autowired注解的实现原理 @ Автоwired注解是 Spring Framework 中的一个重要组件,它提供了自动装配的功能,能够将 Bean 之间的依赖关系自动解析和注入。今天,我们将深入探讨 @...
在没有IoC的情况下,对象通常会自行创建其依赖的对象实例,而IoC容器则负责管理这些依赖,使得开发者无需在代码中硬编码依赖对象的创建。这增强了代码的灵活性,因为依赖关系可以在运行时动态调整。 Spring的DI是...
**接口控制反转(IoC)**,全称Inversion of Control,是软件设计中的一个核心概念,它在现代软件开发中扮演着至关重要的角色,尤其是Java和.NET等面向对象编程领域。IoC的核心思想是将对象的创建和管理权交给容器,...
在Spring框架中,IoC容器负责创建对象、管理它们之间的依赖关系,并在需要时注入这些依赖。 让我们开始分析“Priter”类。这个类代表了打印机,它可能有一个或多个方法用于执行打印操作。为了实现灵活性,我们不...
除了基本的依赖注入,Spring 还支持其他高级功能,如构造器注入、属性注入、工厂方法注入、集合注入等。此外,通过 AOP(面向切面编程)和 Spring 的其他模块,如数据访问、事务管理、MVC 等,我们可以构建出完整的...
PCI并口卡 PCI转打印并口DB25接口扩展卡 IOC835芯片驱动 功能描述: 在具备PCI插槽的电脑上扩展出1个DB25并口 规格说明: 符合PCIRev2.1协议 传输率最大可达1.5 Mbytes/sec 1个DB25并口接头 符合标准的带16byte接收...
Spring IoC作为一种革命性的找对象方式,通过控制反转和依赖注入技术,极大提升了Java应用的开发效率和代码质量。然而,正如文中所言,“只有最适合,没有最佳的哲学”,在实际应用中,应根据具体场景选择最合适的...
官方版本,亲测可用
mptsas: ioc0: attaching raid volume, channel 1, id 0 device-mapper: dm-raid45: initialized v0.2594l md: Autodetecting RAID arrays. 很明显是有的,只是无法确定RAID卡的类型是ioc0还是dm-raid45,于是开始...
### Spring IoC与注解依赖注入详解 #### 一、Spring框架简介 Spring框架是由Rod Johnson创建的一个开源项目,最初是为了解决企业级应用开发中的复杂性问题而诞生的。Spring框架的核心特性包括IoC(Inversion of ...
QuteContainer是用于依赖项注入的轻型控制反转(IOC)容器。 QuteContainer使用C ++ Qt框架构建并用于C ++ Qt框架。 QuteContainer可以使用构造函数参数注入来自动解析对象依赖树。
"IoC 依赖注入 技术总结" IoC 依赖注入技术是软件设计中的一种重要技术,旨在解决软件系统中的耦合问题。该技术的核心思想是将被调用构件实例化,并注入到调用构件之中,以实现软件系统的高内聚、低耦合。IoC 依赖...
这个jar文件"Spring-ioc-jar"包含了实现Spring IOC功能所需的关键类和接口,是学习和使用Spring IOC技术的基础。 Spring框架的IOC容器是其核心组件,主要由`ApplicationContext`和`BeanFactory`两个接口代表。`...
Spring框架的核心特性之一是Inversion of Control(IoC),也被称为依赖注入(Dependency Injection)。IoC是一种设计模式,它将对象之间的依赖关系从代码中解耦出来,转交给一个外部容器(在Spring中就是...
spring-core:核心模块 依赖注入IOC和DI的最基本实现 spring-beans:Bean工厂与装配 spring-context:上下文,即IOC容器 spring-context-support:对IOC的扩展,以及IOC子容器 spring-context-indexer:类管理组件和...
在本例中,可能有一个名为`spring-ioc-anno`的包,其中包含着使用注解配置的Spring bean。 为了启动Spring容器并运行应用程序,我们可以创建一个主类,使用`ApplicationContext`来加载配置并获取bean。例如: ```...
在传统的程序设计中,我们通常手动创建对象并管理它们之间的依赖关系,而在Spring中,这些任务由IOC容器来处理,实现了从依赖管理到依赖注入的转变。 控制反转(IOC)意味着应用程序不再直接创建对象,而是将对象的...