我需要知道如何在spring配置文件中动态注入依赖。举个例子,我有一个叫做'A类'的业务逻辑类。在该类中,它处理一个名为“doSomething()”的方法。 根据应用程序,该方法可以以两种不同的方式执行(对于相同方法,两种类型的实现)。所以我用这个方法声明了一个名为'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类对“经理”接口的引用称为“经理”,它将在部署时通过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文件中的选择动态地注入相关实现。处理这种情况的最佳方法是什么?想法是受欢迎的。
非常感谢!
只想说 - 解决方案使用@Profiles更可取 – 2013-03-07 11:38:59
嗨,是的,但我觉得@profile更适合大规模。我只需要在两个类之间切换只为整个应用程序。所以我发现Nandkumar Tekale的回答很适合我的情况。 btw感谢您的支持! – 2013-03-07 11:45:29