首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring Boot -从控制器重写bean

Spring Boot -从控制器重写bean
EN

Stack Overflow用户
提问于 2020-03-09 14:19:57
回答 3查看 935关注 0票数 1
  1. 我有两个控制器(ControllerAControllerB)
  2. 两个控制器都调用一个服务(MyService)。
  3. 调用一个名为MyRepository的接口,该接口有两个实现(FirstRepositorySecondRepository).

如何在从FirstRepository ControllerA调用服务(MyService)时使用,在调用来自ControllerB时使用MyService

通过这种方式,我可以重用MyService,使用哪个存储库来自Spring配置。

EN

回答 3

Stack Overflow用户

发布于 2020-03-09 14:44:20

我在这里可以看到两种可能的解决方案。1.在您的MyService类中,这两个实现都带有@Qualifier注释(您也可以使用自动列表)。然后,MyService方法将有一个参数,说明应该调用哪个MyRepository实现。我不建议这个解决办法。2.定义MyService的两个实现(FirstService,SecondService)。然后FirstService将自动更新FirstRepository,SecondService将自动更新SecondRepository (使用@Qualifier annotation again )。现在,您可以轻松地将FirstService注入ControllerA,将SecondService注入ControllerB。

但首先我会想到建筑。也许你不需要单独的控制器?

票数 1
EN

Stack Overflow用户

发布于 2020-03-09 14:46:14

您检查过@小学@资源@限定符注释吗?根据您的需求,您可以从中选择。

类似的东西也曾被讨论过这里

票数 0
EN

Stack Overflow用户

发布于 2020-03-09 14:55:08

最后,我创建了两个控制器,并定义了两个@Configuration类,每个@Controller都有一个。

并且使用@Qualifier注释定义了两组bean,然后在每个控制器中让Spring知道我想要注入哪个@Qualified bean。

代码语言:javascript
运行
复制
@RestController
@RequestMapping("/v1/inapp/purchases")
class AController(
  @Qualifier("appStore") private val redeemPurchaseService: RedeemPurchaseService
) : RedeemPurchaseApiDocumentation { // More code }

和另一个控制器

代码语言:javascript
运行
复制
@RestController
@RequestMapping("/v1/inapp/purchases")
class GPlayRedeemPurchaseController(
  @Qualifier("gplay") private val redeemPurchaseService: RedeemPurchaseService
) : RedeemPurchaseApiDocumentation { // More code }

和两个@Configuration文件,每个控制器一个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60602480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档