我找到了解决此问题的许多方法,然后选择下面的方法。
但是它仍然显示NullpointerException
,怎么了?
A班
@Component
public class A {
private static Foo foo;
@Autowired
public void setFoo(Foo foo) {
A.foo = foo;
}
public static someFunction() {
foo.doSomething();
}
}
B级
@Service
public class B {
public void someFunction() {
A.someFunction();
}
}
答案 0 :(得分:3)
您不能在Spring中自动连接静态属性,因为静态字段在类加载期间实例化,因为它们是类的属性,而在Spring初始化bean之后自动连接属性起作用。
尽管您可以在Spring中使用MethodInvokingFactoryBean
来实现所需的功能。
某些示例将在XML中,如下所示
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="staticMethod" value="foo.bar.Class.setTheProperty"/>
<property name="arguments">
<list>
<ref bean="theProperty"/>
</list>
</property>
</bean>
编辑:-不带XML
在您的@Configuration
类中
@Bean
public MethodInvokingFactoryBean methodInvokingFactoryBean() {
MethodInvokingFactoryBean methodInvokingFactoryBean = new MethodInvokingFactoryBean();
methodInvokingFactoryBean.setStaticMethod("MyClass.staticMethod");
return methodInvokingFactoryBean;
}
如果需要更多帮助,请告诉我。