gpt4 book ai didi

java - 辅助注入(inject)根据运行时检查注入(inject)不同的依赖项

转载 作者:行者123 更新时间:2023-12-01 18:13:47 28 4
gpt4 key购买 nike

我有一个应用程序类“Application”,一个由“Impl1”和“Impl2”扩展的抽象类“AbstractClass”。应用程序类获取 impl1 或 impl2 以根据接收到的输入执行某些任务。

目前,我将这两个类注入(inject)到应用程序类中,如下所示。然后根据输入,我要求 impl1 或 impl2 执行任务。

public class Application {

private static final Data data1 = DATA_CONFIG.data_1;
private final AbstractClass impl1;
private final AbstractClass impl2;

@Inject
Application(final AbstractClass impl1, final AbstractClass impl2){
this.impl1 = impl1;
this.impl2 = impl2;
}

public void mainTask(final Data data){

if(data == data1){
impl1.performTask();
}else{
impl2.performTask();
}
}
}

但是,有什么方法可以使用辅助注入(inject)或类似的概念来仅注入(inject)所需的依赖项,例如输入是 data1,我只注入(inject) impl1 而不是 impl2。?

最佳答案

因此,您想要的是根据注入(inject)点的某些上下文(特别是数据对象的值)来选择注入(inject)对象。我没有做过这样的事情,不能保证成功,但是你可以尝试custom injections .

您也可以执行类似 factory 的操作。但恕我直言,这种方法并不比原始方法好多少,因为它只是将 impl1 和 impl2 之间的选择移动到您必须首先创建的工厂类。

草图:

@Inject
Application(IAbstractClassFactory factory){
this.factory = factory
}

void mainTask(final Data data){
impl = factory.create(data)
}

关于java - 辅助注入(inject)根据运行时检查注入(inject)不同的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60412068/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com