Spring Boot-从控制器覆盖bean

问题描述 投票:1回答:2
  1. 我有两个控制器(ControllerAControllerB

  2. 两个控制器都调用服务(MyService)。

  3. MyService调用名为MyRepository的接口,该接口具有两个实现(FirstRepositorySecondRepository)。

ControllerA调用服务(MyService)时如何使用FirstRepository,而从ControllerB调用时使用SecondRepository

这样我可以重用MyService,并且使用哪个存储库来自Spring Configuration。

spring spring-boot javabeans spring-bean
2个回答
0
投票

我可以在这里看到两种可能的解决方案。1.在MyService类中,使用@Qualifier注释自动装配两个实现(也可以自动装配List。然后,MyService方法将具有一个参数,该参数指示应调用哪个MyRepository实现。我不推荐这种解决方案。2.定义MyService的两个实现(FirstService,SecondService)。然后,FirstService将自动连接FirstRepository,而SecondService将自动连接SecondRepository(使用@Qualifier annotation again。现在您可以轻松地将FirstService注入ControllerA,将SecondService注入ControllerB。

但是首先,我会考虑架构。也许您不需要单独的控制器?


0
投票

您是否已检查@Primary@Resource@Qualifier注释?根据您的要求,您可以从中选择。

已经讨论过类似的事情here

© www.soinside.com 2019 - 2024. All rights reserved.