Я хочу внедрить класс динамически на основе аргумента моего вызова метода
Я пытаюсь использовать AspectJ и различные аннотации Spring
Мне нужно решение, подобное этому:
@Component
class MyUseCase(private val spi: MySpiPort) {
fun myAction() {
spi.doSomething("myId")
}
}
interface Injectable
interface MySpiPort : Injectable {
fun doSomething(id: String)
}
class MyProxyClass {
//will intercept all Injectable
fun resolver(id: String): MySpiPort {
if(id == "myId"){
//inject MyFirstImpl
}else{
//inject MySecondImpl
}
TODO("not implemented")
}
}
@Component
class MyFirstImpl : MySpiPort {
override fun doSomething(id: String) {
TODO("not implemented")
}
}
@Component
class MySecondImpl : MySpiPort {
override fun doSomething(id: String) {
TODO("not implemented")
}
}
Я ожидаю, что инъекция - это просто общий интерфейс реализаций, я не хочу вводить в классе MyUseCase класс FactoryBean или что-то в этом роде.