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

时间:2019-08-19 08:17:25

标签: micronaut

可以说我有MotoDaoCarDao,两者都是接口VehicleDao的实现。

如何使用微坚果将两者同时注入一个班级?

我希望如下所示:

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

1 个答案:

答案 0 :(得分:2)

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