MyHow如何在springboot中使用构造函数和调用方法注入bean
MyHow如何在springboot中使用构造函数和调用方法注入bean,spring,spring-boot,Spring,Spring Boot,MyObj是一个非托管bean的用户定义POJO。 我有上述课程。现在我必须根据控制器中的某些条件调用getTrade()方法。你能帮我一下吗 此答案基于问题提供的信息 要注入bean,您可以执行以下操作: @Service abstract class A { protected MyObj obj; protected A(MyObj obj) { this.obj = obj; } public abstract XYZ getTrade(); } @Servic
MyObj
是一个非托管bean的用户定义POJO。
我有上述课程。现在我必须根据控制器中的某些条件调用getTrade()方法。你能帮我一下吗 此答案基于问题提供的信息 要注入bean,您可以执行以下操作:
@Service
abstract class A {
protected MyObj obj;
protected A(MyObj obj) {
this.obj = obj;
}
public abstract XYZ getTrade();
}
@Service
public class B extends A {
B(MyObj obj) {
super(obj);
}
public XYZ getTrade() {}
}
@Service
public class C extends A {
C(MyObj obj) {
super(obj);
}
public XYZ getTrade() {}
}
@Controller
public class MyController {
@GemMapping("/test")
public void test() {
MyObj obj = new MyObj();
if(condition 1) {
//call getTrade() method of class B
}
if(condition 2) {
//call getTrade() method of class C
}
}
}
在这种情况下,bean必须有一个无参数构造函数。因此,在您的情况下,您可以做的是在每个服务中都有一个无参数构造函数。然后用setter设置你的myObj。这就可以了。如果你想在你的服务中实现多形性,你需要在你的类
B
和C
中添加一个限定符。因此,现在的问题是如何在运行时动态注入服务,这里给出了答案:
您的问题缺少信息。例如,要将哪个服务注入控制器。你的控制器代码。什么是MyObj?它是组件、配置还是Bean?请解决你的问题嗨,Shoshi。我补充了一些细节。谢谢你的回复。这里B和C只是一个例子。我将有100个这样的类,它们将扩展类A。在这里,我试图实现多态性。在基类中,我将有公共方法,然后在子类中,我将有特定的方法。您将有100个服务?你到底想做什么?我必须分析100种类型的交易,这样你就可以只使用一种服务。在该服务中,您可以使用其他类或方法解析您的100笔交易。我想你不需要为此创建100服务。谢谢,罗伯特。我将尝试这个解决方案
@Controller
public class MyController {
private final B b;
private final C c;
public MyController (B b, C c) {
this.b = b;
this.c = c;
}
.........
}