У меня есть рабочий класс:
public class WorkClass implements ApplicationContextAware {
... // has access to ApplicationContext
}
Есть полезный интерфейс:
public interface UsefulInterface {
void doUseful();
}
Имейте некоторый класс реализации, который может сделать гораздо больше:
public class CanDoAlmostEverything implements UsefulInterface {
...
}
Я хочу предоставить реализацию UsefulInterface (через CanDoAlmostEverything) для WorkClass с помощью Spring, но НЕ для доступа к каким-либо другим методам CanDoAlmostEverything, кроме "doUseful"
Другими словами, я хочу объявить свой bean [s] как:
<bean id="workerA" interface="UsefulInterface" class="CanDoAlmostEverything"/>
<bean id="workerB" interface="UsefulInterface" class="AnotherUsefulImpl"/>
WorkClass будет знать о реализации интерфейса только во время выполнения, и код должен выглядеть так:
String todayWorker = getWorkerNameFromDataBase();
UsefulInterface worker = appCtx.getBean(todayWorker, UsefulInterface.class);
worker.doUseful();
Является ли это возможным? И как это должно выглядеть?