你可以使用静态字段@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也可以用这种方法更困难。