使用 micronaut 注入同一接口的不同实现

Inject different implementations of the same interface using micronaut

假设我有 MotoDaoCarDao,两者都是接口 VehicleDao 的实现。

如何使用 micronuat 将两者注入 class?

我希望如下所示:

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

您可以使用 @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