你可以使用静态字段@Autowired?

有没有办法使用静态字段@Autowired 。 如果没有,有没有其他的方法来做到这一点?

总之,没有。 Spring中不能自动连线或手动连线静态字段。 你必须写自己的逻辑来做到这一点。

 @Component public class NewClass{ private static SomeThing someThing; @Autowired public void setSomeThing(SomeThing someThing){ NewClass.someThing = someThing; } } 

@Autowired可以和setter一起使用,所以你可以让setter修改一个静态字段。

只有一个最后的build议… 不要

创build一个你可以自动assembly的bean,它将初始化静态variables作为一个副作用。

您可以使用XML表示法MethodInvokingFactoryBean来实现这一点。 在这里看一个例子。

 private static StaticBean staticBean; public void setStaticBean(StaticBean staticBean) { StaticBean.staticBean = staticBean; } 

你应该尽可能使用弹簧注射,因为这是推荐的方法,但是这并不总是可行的,因为我敢肯定,你可以想象,不是所有的东西都可以从弹簧容器中取出,或者你可能在处理传统的系统。

注意testing也可以用这种方法更困难。