使用扩展的泛型自动装配Spring-Bean的最佳实践

时间:2019-07-01 14:26:20

标签: java spring generics inheritance autowired

我正在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> { ... }

我的问题有更好的解决方案吗?

0 个答案:

没有答案