【问题标题】:Inject different implementations of the same interface using micronaut使用 micronaut 注入同一接口的不同实现
【发布时间】:2019-08-19 08:17:25
【问题描述】:

假设我有MotoDaoCarDao,它们都是接口VehicleDao 的实现。

如何使用 micronuat 将两者都注入到一个类中?

我希望像下面这样:

@Inject
public VehicleHandler(@MotoDao VehcileDao motoDao, @CarDao VehicleDao carDao)

【问题讨论】:

    标签: micronaut


    【解决方案1】:

    您可以使用@Named 注释来限定前缀 (moto, car),如下所示:

    @Inject
    public VehicleHandler(@Named('moto') VehcileDao motoDao, @Named('car') VehicleDao carDao)
    

    或者您可以创建自己的限定符注释:

    @Qualifier
    @Retention(RUNTIME)
    @interface Car {
    }
    
    @Qualifier
    @Retention(RUNTIME)
    @interface Moto {
    }
    

    用它们注释你的 DAO 类:

    @Moto
    public class MotoDao implements VehicleDao {
        ...
    }
    

    ...并像这样使用它:

    @Inject
    public VehicleHandler(@Moto VehcileDao motoDao, @Car VehicleDao carDao)
    

    您可以在此处的 Micronaut 官方文档中找到更多数据:https://docs.micronaut.io/latest/guide/ioc.html

    【讨论】:

    • 感谢您提供文件,我实在找不到。它的工作原理与使用 guice 相同!
    猜你喜欢
    • 2013-05-05
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多