我想根据方法调用的参数动态注入(inject)一个类
我尝试使用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")
}
}
我希望仅注入(inject)实现的通用接口(interface),我不想在 MyUseCase 类中注入(inject) FactoryBean 类或类似的东西。
最佳答案
您可以利用 Spring 的条件注入(inject)。请引用https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-java-conditional
关于java - 在 Spring 中动态注入(inject)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58474494/