Есть компонент:
@Component
public class Provider<EntityType> extends AbstractProvider<EntityType> {
@Autowired
private ApplicationContext appCxt;
MyService<EntityType> myService;
}
Мне надо параметризовать MyService в зависимости от запроса с фронтенда. Т.е MyService инициализировать одним из дочерних классов. Дочерних классов много, всех их автоварить не хочется, по этому тут есть ApplicationContext из которого, по имени мы получаем нужный дочерний объект:
public void initService(Class clazz) {
final String entityClassName = clazz.getName();
if (MyObjectService.class.getName.equals(entityClassName)){
this.myService= appCxt.getBean(MyObjectService.class);
}
Сейчас я работаю с этим API извне так:
1)автоварю Provider
2) По запросу с фронта узнаю какой именно сервис нужен.
3)вызываю у Provider метод initService(), в который передаю нужный дочерний класс
Мне надо, чтобы третьего шага не было. Вместо этого, хочется, чтобы пользователь апи получал из контекста ( appCxt.getBean(Provider.class) ) уже бин с инициализированным service. Вопрос, как это реализовать?