I want to inject a class dynamically based on the argument of my method call
I`ve try use AspectJ and different annotations of Spring
I need a solution like that:
@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")
    }
}
I expect inject just a common interface of the implementations, I don't want inject in MyUseCase Class a FactoryBean Class or something like that.
 
    