在静态方法中使用@Autowired服务

问题描述 投票:-1回答:1

我试图在具有静态方法的类中自动装配多个服务(大约10-15),并且遇到了一个关于使用in this post构造函数的@Autowired解决方案。我们也可以为多个类使用构造函数@Autowired方法吗?

例如,假设我有两个类Foo1Foo2。我可以为这两个类使用单个构造函数

@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();
    }
}

或者有没有其他方法来实现这一目标?

java spring static autowired
1个回答
0
投票

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();
    }
}

这个结构是弹簧预定的方式,我建议你使用它。

© www.soinside.com 2019 - 2024. All rights reserved.