如何注入接口的具体实现?

在spring(启动)我有一个接口的多个实现。 当注入接口时,我想定义我要注入哪个特定的实现。

我怎样才能做到这一点?

你可以结合@Resource@Qualifier :(为了简单起见,所有的代码都是kotlin)

0)接口定义:

 interface Counter class MemoryCounter : Counter class DatabaseCounter : Counter 

1)用一个名字标记你的实现:

 @Resource("myMemoryCounter") @Component class MemoryCounter : Counter @Resource("myDatabaseCounter") @Component class DatabaseCounter : Counter 

2)在您的服务中注入所需的实施

 @Service class Service( @Qualifier("myMemoryCounter") val counter1: Counter, // will be MemoryCounter @Qualifier("myDatabaseCounter") val counter2: Counter, // will be DatbaseCounter )