我正在尝试在具有静态方法的类中自动装配多个服务(大约10-15),并且遇到了关于in this post的关于使用@Autowired
构造函数的解决方案。我们也可以对多个类使用构造函数@Autowired方法吗?
例如,假设我有两个类Foo1
和Foo2
。我可以对两个类都使用单个构造函数吗?
@Component
public class Boo {
private static Foo1 foo1;
private static Foo2 foo2;
@Autowired
public Boo(Foo1 foo1, Foo2 foo2) {
Boo.foo1 = foo1;
Boo.foo2 = foo2;
}
public static void randomMethod() {
foo1.doStuff();
foo2.doSomeOtherStuff();
}
}
或者还有其他方法可以实现这一目标吗?
答案 0 :(得分:0)
Spring + static
是一个非常糟糕的主意。
我建议使randomMethod()
而不是static
,然后在先前需要调用Boo
方法的任何地方注入static
。例如更改此:
class A {
public void run() {
Boo.randomMethod();
}
}
对此:
@Component
public class A {
private final Boo boo;
@Autowired
public A(Boo boo) {
this.boo = boo;
}
public void run() {
boo.randomMethod();
}
}
这种构造是春季设计的方式,我建议您使用它。