У меня есть другой подход к этому.
Есть интерфейс MyInterface.
public interface MyIinterface{
public void doSomething();
}
Создайте множество реализаций этого интерфейса.
@Component
public class MyImplementation1 implements MyInterface{
@Override
public void doSomething(){
}
}
Используйте пружинные стержни в зависимости.
Аннотируйте все реализации с помощью @ Component.
@Component
public class MyImplementation1 implements MyInterface{
.
.
В некотором классе Util есть метод, который даст вам реализацию на основе строкового ключа.
public static MyInterface getImplementation(String name){
ApplicationContext context;
return context.getBeanByName(name);
}