在我的应用程序中,我有几个使用服务的bean。这些服务使用@Named("Name")
注释,并注入@Inject
。
我有服务。我有一个接口和实现。 在我的应用程序的另一个模块中,我可以通过多种方式使用此服务,但有些方法需要不同,我需要新的方法。所以我想用另一个服务扩展第一个服务。
我想出了类似的东西:
Interface Service1 {...}
@Named(Service1)
Class Service1Impl implements Service1 {...}
Interface SpecialService1 extends Service1 {...}
@Named(SpecialService1)
Class SpecialService1 extends Service1Impl implements SpecialService1 {...}
当然,当我启动我的服务器时,我得到的消息是没有类型为Service1
的限定bean,因为实现Service1的类有两个匹配。
但我需要在Service1
中扩展SpecialService1
以访问所有方法,我需要在Service1Impl
中扩展SpecialService1Impl
,这样我就不必再实现所有内容了
在我的bean中,我只想注入SpecialService1
并访问Service1
和SpecialService1
的所有方法。
你知道我怎么能让这样的结构起作用吗?
答案 0 :(得分:0)
一位同事给了我一个提示,我让它上班。
我想要注入其中一项服务,我必须添加@Qualifier("Service1")
。这样他就知道要注入哪些服务。
你有更优雅的解决方案吗?否则我会接受这个作为问题的答案。
编辑:如上面的评论中所述,我还使用@Primary
作为Service1。这样我只需要使用@Qualifier