Javax:扩展命名服务

时间:2016-10-11 12:11:01

标签: java spring

在我的应用程序中,我有几个使用服务的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并访问Service1SpecialService1的所有方法。

你知道我怎么能让这样的结构起作用吗?

1 个答案:

答案 0 :(得分:0)

一位同事给了我一个提示,我让它上班。

我想要注入其中一项服务,我必须添加@Qualifier("Service1")。这样他就知道要注入哪些服务。

你有更优雅的解决方案吗?否则我会接受这个作为问题的答案。

编辑:如上面的评论中所述,我还使用@Primary作为Service1。这样我只需要使用@Qualifier

标记带有SpecialService1的Inject