Лучшая практика для автоматического подключения Spring-Bean с расширенными генериками - PullRequest
0 голосов
/ 01 июля 2019

Я устанавливаю общую структуру сервиса в бэкэнде Java Spring.У меня есть служба со следующей подписью

public class GenericService<T, S extends ObjectService<T>> { ... }

. В этой службе я выполняю автоматическое подключение S следующим образом:

@Autowired
private S objectService;

У меня также есть 3 службы, реализующие интерфейс ObjectService:

  • UserService реализует ObjectService
  • LocationService реализует ObjectService
  • CompanyService реализует ObjectService

В другой службе я хотел бы автоматически подключить следующие конкретные службы:

@Autowired
private GenericService<User, UserService> genericUserExportService;

@Autowired
private GenericService<Location, LocationService> genericLocationExportService;

@Autowired
private GenericService<Company, CompanyService> genericCompanyExportService;

Пытаясь это сделать, я получаю следующее сообщение об ошибке:

expected single matching bean but found 3

Я уже нашел решение с созданием подкласса из GenericService для пользователя, местоположения и компании, но мне это не нравитсяпотому что мне нужно создать множество пустых подклассов, например:

public class GenericUserService extends GenericService<User, UserService> { ... }

Есть ли лучшее решение для моей проблемы?

...