首页 > 解决方案 > jersey 单路径多类实现(以编程方式选择一个实例)类似于条件依赖注入

问题描述

我在 Web 应用程序中有 3 个服务器模式 (1,2,3) ,对于每个服务器模式,都有一个具有相同路径(/abc) 的控制器类。

例如:abc1.class、abc2.class、abc3.class 以及所有类都继承abc接口

服务器模式将在服务器启动时通过读取 conf 文件来决定。

Q1。我的问题是我无法在构建时删除那些控制器类。现在基于服务器模式说 2 那么 abc2 类的实例应该指向路径/abc

Q2。服务类也是如此(有 100 多个类似的服务和控制器类)。@Inject 应该根据服务器模式获取 abc 的实例。

我是球衣新手。我学到的是@Qualifier、@Priority、InjectionPoint,但它们都不适合我的情况(据我所知)

我的想法(对于 Q2)是创建一个公共层(@CustomInject)来完成这个依赖注入,

通过创建注释“ServerMode(value (1|2|3)”将它们添加到这些类中,基于 value/server-mode,可以从该公共层返回请求的 Class-Type 的实例

(类似于继承@inject 和@any 循环可用实例,然后从该公共层返回基于服务器模式的期望)

这可能吗?如果是这样,如何实现它(对于 Q1 和 Q2),是否有更好的预定义方式/注释?

感谢您的时间和帮助

标签: javaweb-servicesdependency-injectionjersey

解决方案


推荐阅读