2015-10-14 21 views
-1

我在@Autowired sessionFactory bean的類中,然後在運行時實例化了這個類,當我調用方法時,它拋出一個空指針異常。我不知道我的代碼中缺少什麼。它編譯成功,當我運行它時,它拋出一個空指針異常。有人可以幫幫我嗎?在運行時實例化一個具有@Autowired依賴項的對象拋出了一個空指針異常

這裏是我的類:

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); 

    } 

} 
+0

似乎你沒有依賴注入的經驗。請參閱[本文](http://www.tutorialspoint.com/spring/spring_dependency_injection.htm)。由於您在代碼中實例化對象,因此Spring無法捕獲並注入依賴項。 – xathien

+0

[爲什麼我的Spring @Autowired字段爲空?](http://stackoverflow.com/questions/19896870/why-is-my-spring-autowired-field-null) – kryger

回答

-1

如果它是一個真正的代碼,然後配置一些丟失:

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

如果你閱讀這篇文章,您獲得更好的explination。

公共類InstantiateSampleAutowire {

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

}

爲了使用一個組件(SampleAutowire),你需要的是調用類(InstantiateSampleAutowire)是相同的彈簧CONTEX○調用獲得春天上下文。

呦coud加入@Component @Component 公共類InstantiateSampleAutowire {

,然後@Autowire到該實例

@Autowired SampleAutoWire sampleAutowire做到這一點;

相關問題