Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么@Autowired没有';在静态法中不能工作_Java_Spring_Nullpointerexception - Fatal编程技术网

Java 为什么@Autowired没有';在静态法中不能工作

Java 为什么@Autowired没有';在静态法中不能工作,java,spring,nullpointerexception,Java,Spring,Nullpointerexception,我找到了许多解决这个问题的方法,并选择了下面的一种 但是它仍然会得到NullpointerException,怎么了 一门课 @Component public class A { private static Foo foo; @Autowired public void setFoo(Foo foo) { A.foo = foo; } public static someFunction() { foo.doSom

我找到了许多解决这个问题的方法,并选择了下面的一种

但是它仍然会得到
NullpointerException
,怎么了

一门课

@Component
public class A {

    private static Foo foo;

    @Autowired
    public void setFoo(Foo foo) {
        A.foo = foo;
    }

    public static someFunction() {
        foo.doSomething();
    }
}
@Service
public class B {

    public void someFunction() {
        A.someFunction();
    }
}
B级

@Component
public class A {

    private static Foo foo;

    @Autowired
    public void setFoo(Foo foo) {
        A.foo = foo;
    }

    public static someFunction() {
        foo.doSomething();
    }
}
@Service
public class B {

    public void someFunction() {
        A.someFunction();
    }
}

不能在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>

如果您需要更多帮助,请告诉我。

自动连线是关于实例化对象的,您不实例化所述对象。你为什么想要这个?你把Foo变成了bean、组件或服务了吗?请共享与Foo相关的代码。Foo是一个已经存在的服务,我想使用它的一些方法。您的场景是什么,您需要静态方法吗?通常,在spring上下文中只有一个。在一个类中自动连接一个bean将与在另一个类中自动连接的bean相同。除了你定义的原型。嘿,伙计们,我终于解决了这个问题。这段代码没有问题,问题是spring组件扫描没有扫描类的文件夹。在我编辑了spring配置之后,现在一切都好了。有没有不带xml的选项?@user7294900我已经更新了答案,如果你认为它对你有用,也接受它。我已经解决了这个问题,谢谢你的建议。@Roil.Li你也接受答案吗?那太好了。