我需要知道如何在 spring 配置文件中动态注入依赖项。例如,我有一个名为“A 类”的业务逻辑类。在该类中,它处理一个名为“doSomething()”的方法。根据应用程序,此方法可以以两种不同的方式执行(同一方法的两种类型的实现)。所以我用这个方法声明了一个名为“Manager”的接口,并为同一个接口创建了两个实现类。让我们称它们为实现接口“Manager”的“Impl1”和“Impl2”。
Interface Manager{
void doSomething();
}
Class Impl1 implements Manager{
public void doSomething(){
//doIt like this way
}
Class Impl2 implements Manager{
public void doSomething(){
//doIt like that way
}
}
A 类引用了名为“manager”的“Manager”接口,该接口将在部署时通过 Spring DI 设置。该注入可以是 Impl1 对象或 Impl2 对象。它将由最终用户决定。所以我必须为最终用户提供两个选项,他或她可以决定他或她想要以哪种方式处理这个“doSomething()”方法,并根据他或她的选择,我将注入相关的实现类(Impl1 或 Impl2 )。
Class A{
private Manager manager; //this can be either Impl1 or Impl2
public void setManager(Manager manager){
this.manager = manager;
}
public void performLogic(){
manager.doSomething();
}
}
最终用户只有一次机会做出该选择,之后该应用程序将永远使用该实现,除非用户想再次安装应用程序的新副本。如何根据用户在spring xml文件中的选择动态注入相关实现。处理这种情况的最佳方法是什么?欢迎提出想法。
提前谢谢大家!