我试图在具有静态方法的类中自动装配多个服务(大约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();
}
}
或者有没有其他方法来实现这一目标?
Spring + static
是一个非常糟糕的主意。
我建议制作randomMethod()
而不是static
然后注入Boo
你以前必须称之为static
方法。 E.g改变这个:
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();
}
}
这个结构是弹簧预定的方式,我建议你使用它。