在 Java 类中注入 Koin

2022-09-03 18:07:50

我试图在我当前的项目中将Dagger 2替换为Koin,我不想在Kotlin中重写一些类来使用它。

是否可以在java类中注入Koin?

在 Kotlin 中只是

// Inject MyPresenter
val presenter : MyPresenter by inject()

谢谢


答案 1

是的,这是可能的。只需将项目与此 gradle 文件同步即可

implementation "org.koin:koin-java:$koin_version"

在 java 类中替换

// Inject MyPresenter
private val presenter : MyPresenter by inject()

private Lazy<MyPresenter> presenter = inject(MyPresenter.class);

并在Java类中获取演示器方法,例如

presenter.getValue().sayHello() 

答案 2

您不再需要额外的依赖项,因为这现在是 & 的一部分。koin-javakoin-androidkoin-core

// Imports
import static org.koin.java.KoinJavaComponent.get;
import static org.koin.java.KoinJavaComponent.inject;
import static org.koin.core.qualifier.QualifierKt.named;
import static org.koin.core.parameter.DefinitionParametersKt.parametersOf;

// Lazy injection
Lazy<MyDependency> dependency = inject(MyDependency.class);

// Eager injection
MyDependency dependency = get(MyDependency.class);

// Named injection
get(MyDependency.class, named("MyNamedDependency"));

// Parameter injection
get(MyDependency.class, null, () -> parametersOf(this));

Koin Android Java docs


推荐