假设我的服务类型QTableWidget
包含许多不同的实施,QHeaderView
和Service
。我还有一个缓存层ServiceImplX
,它实现ServiceImplY
并包含CachedService
的一些基本实现来访问数据。
我想要的是能够绑定Service
和Service
中的一个作为要注入ServiceImplX
的基本实现,而ServiceImplY
本身应绑定到CachedService
CachedService
将注入此服务的实际客户。
我想避免命名注释来解决这个问题,因为这似乎很脆弱。有没有更安全的方法来实现这个目标?
答案 0 :(得分:1)
定义正确的绑定注释:
@RetentionPolicy(RUNTIME)
@BindingAnnotation
@interface ServiceBinding {}
这比@Named
绑定注释更强大,因为:
@Named
注释中的名称可以在运行时构建,因此更难找到。public
/ private
等修饰符来控制绑定注释的可访问性,这样您就可以控制注释的配置和引用位置。 @Named
注释的字符串在全局范围内。