我们有一个核心java应用程序和不同客户机的不同插件。我们正在使用hk2进行依赖注入。
我现在想知道是否有可能将一些@named限定符名称放入插件的属性文件中,这样我就可以更改属性文件的值,为不同的客户机注入不同的类实现。
我的意思是有@named(key=“plugins.impl.xplugin”)而不是@named(“xplugin”)。
这将有助于摆脱这么多的样板代码插件。
我们有一个核心java应用程序和不同客户机的不同插件。我们正在使用hk2进行依赖注入。
我现在想知道是否有可能将一些@named限定符名称放入插件的属性文件中,这样我就可以更改属性文件的值,为不同的客户机注入不同的类实现。
我的意思是有@named(key=“plugins.impl.xplugin”)而不是@named(“xplugin”)。
这将有助于摆脱这么多的样板代码插件。
1条答案
按热度按时间c86crjj01#
这是使用iterableprovider(其上有一个“named”方法,用于在运行时选择特定的命名版本)的可能解决方案:
在上面的示例中,您只需将所需服务的名称(“foo”或“bar”)传递给getspecificservice,它将传回您选择的实现。
注意:如果给定的服务没有实现给定的名称,那么真正的代码可能希望更复杂地了解会发生什么。