gpt4 book ai didi

java - 在 Guice 中绑定(bind)相同类型两次(例如包装器)以进行依赖注入(inject)的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-01 09:42:05 25 4
gpt4 key购买 nike

假设我有一个服务类型 Service,它有许多不同的实现:ServiceImplXServiceImplY。我还有一个缓存层 CachedService,它实现 Service 并包装 Service 的一些基本实现来访问数据。

我想要的是能够绑定(bind) ServiceImplXServiceImplY 之一作为注入(inject)到 CachedService 的基本实现,而 CachedService 本身应该绑定(bind)到 Service 以注入(inject)到该服务的实际客户端中。

我想避免命名注释来解决这个问题,因为这看起来很脆弱。有没有更安全的方法来实现这一目标?

最佳答案

定义适当的绑定(bind)注释:

@RetentionPolicy(RUNTIME)
@BindingAnnotation
@interface ServiceBinding {}

这比 @Named 绑定(bind)注释更加健壮,因为:

  • 它是一个符号,就像类名或变量一样,因此您可以轻松地在代码中找到对它的引用; @Named 注解中的名称可以在运行时构造,因此更难找到。
  • 您可以通过 public/private 等修饰符控制绑定(bind)注释的可访问性,这样您就可以控制注释的配置和引用位置。 @Named 注解的字符串位于全局范围内。

关于java - 在 Guice 中绑定(bind)相同类型两次(例如包装器)以进行依赖注入(inject)的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38374444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com