依赖注入框架Koin(一)知识预览

依赖注入框架Koin(一)知识预览,第1张

概述一、基础概念依赖注入(DependencyInjection)和控制反转(InversionofControl)是同一个概念。具体含义是:当某个角色(可能是一个Java实例,调用者)需要另一个角色(另一个Java实例,被调用者)的协助时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring里,创建 一、基础概念

依赖注入(Dependency Injection)和控制反转(Inversion of Control)是同一个概念。

具体含义是:当某个角色(可能是一个Java实例,调用者)需要另一个角色(另一个Java实例,被调用者)的协助时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring里,创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者实例的工作通常由spring容器来完成,然后注入调用者,因此也称为依赖注入。DI

依赖注入框架的优点:

依赖注入库会自动释放不再使用的对象,减少资源的过度使用。

在指定范围内,可重用依赖项和创建的实例,提高代码的可重用性,减少了很多模板代码。

代码变得更具可读性。

易于构建对象。

编写低耦合代码,更容易测试.

AndroID端常用DI框架

Dagger2/Hilt

Koin

框架优点缺点
dagger2/HiltGoogle加持,社区广泛,性能佳难上手,编译慢,编译错误晦涩,kotlin、androID支持不简洁(代码量大)
Koin易上手、易调试、编译快、代码少,jetpack/Kotiln支持棒性能不及dagger2/Hilt,java兼容不足,社区小
......  
二、Koin的学习使用

依赖包的添加

//1、在project的build.gradle下,buildScript的dependencIEs添加 classpathbuildscript {    repositorIEs {        jcenter()    }    dependencIEs {        classpath "org.koin:koin-gradle-plugin:$koin_version"    }}//2、应用koin插件apply plugin: 'koin'
//3、在各自module的build.gralde 的dependencIEs添加依赖包// Koin for Kotlinimplementation "org.koin:koin-core:$koin_version"implementation "org.koin:koin-core-ext:$koin_version"​// Koin for AndroIDimplementation "org.koin:koin-androID:$koin_version"implementation "org.koin:koin-androID-scope:$koin_version"implementation "org.koin:koin-androID-viewmodel:$koin_version"implementation "org.koin:koin-androID-ext:$koin_version"//koin for AndroIDx 基本二选一即可implementation "org.koin:koin-androIDx-scope:$koin_version"implementation "org.koin:koin-androIDx-viewmodel:$koin_version"implementation "org.koin:koin-androIDx-fragment:$koin_version"implementation "org.koin:koin-androIDx-ext:$koin_version"​testImplementation "org.koin:koin-test:$koin_version"
1 、简单使用

三步走

业务class的创建

定义koin的容器模块module,内部声明类的创建(单例、工厂等)

Application调用stratKoin内部初始化modules

关键函数符号

startKoin

module

single

factory

viewmodel

fragment

by inject()/get(),前者在AndroID的运行时组件(AFSC)有效

by vIEmwodel()/getviewmodel()

named()//限定标示符,string和type

bind类似于类型扩展,接口实现,通过get<T>获取,泛型时候,koin.bind(T,instance)来获取,另有getAll()

2、使用

无参构造,单参数构造

多构造函数,需要使用qualifIErs限定符号

single单例的scope,factory是新建对象 的scope,可以自定scope

外部参数的构造函数,初始化可用表达式构造如:(vIEw:VIEw)->VIEwInfo(vIEw),使用方get/inject时候,接收参数使用parametersOf()、、最多5个参数

普通类使用koin注解,需要实现KoinComponent接口

跨模块module的使用依旧如是

getProperty获取配置file的Property属性,androID是androIDfilePropertIEs

组件化开发中,可使用外部加载 loadKoinModule在startKoin之外 *** 作。

Activity/Fragment默认扩展了scope字段

附注:

在startKoin中androIDLogger注意添加参数Level.error,否则可能报错(这是个BUG)

使用by lazy的时候,注意加载顺序,不要和别人比懒,可能别人比你更懒!

在module中不要空的函数块

多次重复声明某个对象,需要overrIDe

注意inject/viewmodel等函数符号的导包,别弄错

koin适用于androID ,java,所以注意区分

总结

以上是内存溢出为你收集整理的依赖注入框架Koin(一)知识预览全部内容,希望文章能够帮你解决依赖注入框架Koin(一)知识预览所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1054072.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存