Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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依赖项的对象会引发nullpointer异常_Java_Spring_Autowired - Fatal编程技术网

Java 在运行时实例化具有@Autowired依赖项的对象会引发nullpointer异常

Java 在运行时实例化具有@Autowired依赖项的对象会引发nullpointer异常,java,spring,autowired,Java,Spring,Autowired,我在类中@Autowired了sessionfactorybean,然后在运行时实例化了该类,当我调用该方法时,它抛出了一个null指针异常。我不知道我的代码中缺少了什么。它编译成功,当我运行它时,它抛出了一个nullpointer异常。有人能帮我吗 这是我的班级: public class InstantiateSampleAutowire{ SampleAutoWire sampleAutowire = new SampleAutowire(); sampleAutowir

我在类中@Autowired了sessionfactorybean,然后在运行时实例化了该类,当我调用该方法时,它抛出了一个null指针异常。我不知道我的代码中缺少了什么。它编译成功,当我运行它时,它抛出了一个nullpointer异常。有人能帮我吗

这是我的班级:

public class InstantiateSampleAutowire{

    SampleAutoWire sampleAutowire = new SampleAutowire();
    sampleAutowire.getSomeData();

}

@Component
public class SampleAutowire{

    @Autowired
    private SessionFactory sessionFactory;

    private Session getCurrentSession() {
        return sessionFactory.getCurrentSession();
    }

    public void getSomeData(){

        getCurrentSession().createQuery(SQLQuery);

    }

}

您应该将SampleAutowire注入实例化SampleAutowire,以便让spring上下文处理您的实例

public class InstantiateSampleAutowire {
   @Autowired
   SampleAutoWire sampleAutowire;
   ...
}

如果你读了这篇文章,你会得到一个更好的解释:

如果它是一个真正的代码,那么一些配置就会丢失

公共类实例化SampleAutowire{

SampleAutoWire sampleAutowire = new SampleAutowire();
sampleAutowire.getSomeData();
}

为了使用组件(SampleAutowire),您需要调用器类(InstancesSampleAutoWire)位于调用器获取spring上下文的同一spring上下文中

你可以通过添加@Component来做到这一点 @组成部分 公共类实例化SampleAutowire{

SampleAutoWire sampleAutowire = new SampleAutowire();
sampleAutowire.getSomeData();
然后@Autowire连接到实例

@自动连线
SampleAutoWire SampleAutoWire;

似乎您对依赖项注入没有经验。请参阅。由于您在代码中实例化对象,Spring无法捕获该对象并注入依赖项。可能重复