如何注入接口的具体实现?
在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 )