2016-05-27 1 views
0

У меня есть следующий вопрос: у меня есть приложение SPRING с конфигурацией xml (без весны), этот документ имеет имя класса для реализации в моем приложении (позволяет сказать com.stack.impl .MyClass), и это classs реализует мой интерфейс (позволяет сказал MyInterface) Так что я хочу динамично назвать реализацию, когда что-то произойдет, как это:Весенняя нагрузка Реализация без xml

String myClass=xml.getProperty(id); 
    MyInterface myInterface=ctx.getBean(myClass); 
    myInterface.execute(); 

Любое предложение приемлемо? Спасибо и рассматривает

+1

Получение боба из контекста приложения и вызов методов на нем тривиально легко. Почему вы это затрудняете? Пусть Спринг выполнит свою работу. – duffymo

+0

Если бы у меня было больше репутации, я бы тоже проголосовал слишком – jjhavokk

+0

Я не использовал spring-baen.xml, у меня есть только имя класса в String – user3272931

ответ

0

Я использовал этот метод, спасибо большого за вашу помощь @duffymo и @jjhavokk, надеюсь, вы получите ту же помощь от других госзакупок:

public AnnotationConfigApplicationContext init(){ 
    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); 
    try { 
     Class<DataPreProcessor> c= (Class<DataPreProcessor>) Class.forName("com.banamex.middleware.commons.DataPrepProcesorTest"); 
     Class<DataPreProcessor> c2= (Class<DataPreProcessor>) Class.forName("com.banamex.middleware.commons.DataPrepProcesorTest2"); 
     DataPreProcessor dp=c.newInstance(); 
     DataPreProcessor dp2=c2.newInstance(); 
     context.getBeanFactory().registerSingleton("c", dp); 
     context.refresh(); 
    } catch (InstantiationException e) { 

     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 
    return context; 
}