使用 micronaut 注入同一接口的不同实现
Inject different implementations of the same interface using micronaut
假设我有 MotoDao
和 CarDao
,两者都是接口 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
假设我有 MotoDao
和 CarDao
,两者都是接口 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