2015-05-20 39 views
0

我閱讀了有關自動裝配概念並嘗試在我的項目中使用它的信息。我想要的只是爲特定類創建一個實例,並且可以與所有具有自動裝配的類一起使用。儘管在調度程序servlet.xml中寫入了bean定義,但Spring自動裝配中的NullpointerException異常

調度-servlet.xml中

<bean id="modifyService" 
    class="com.xyz.service.ModifyPreferencesService"/> 

沒有範圍定義定義的bean,所以這將是單身。 現在我使用它在兩個類。

class ABCEvaluationService{ 
@Autowired 
ArrayList listIncident; 
//This class is instantiating IncidentFactory with new keyword in a method 
**//Methods using listIncident - getting empty list here** 
} 

class IncidentFactory{ 
**@Autowired 
List listIncident 
@Autowired 
ModifyPreferencesService modifyService;** 

//This class creates Incident Objects and add it to the listIncident. 
**//Uses modifyService class objects - but I am getting null here** 
} 

問題是我能夠在一流的使用它,但在第二類是給我的NullPointerException。其他bean也發生同樣的事情。我是否做錯了。這不是自動裝配的目的嗎?請解釋..我正在學習Spring,不想學習錯誤的概念。

完成調度-servlet.xml的是(我真的不能複製粘貼..所以可以通過語法錯誤,請忽略如果有的話):

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.1.xsd 
     http://www.springframework.org/schema/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"> 
    <context:component-scan base-package="mypack" />   
    <mvc:annotation-driven/> 
    <mvc:interceptors> 
    <mvc:interceptor> 
     <mvc:mapping path="/ABCReportForm"/> 
     <bean class="com.xyz.interceptor.ValueStreamInterceptor" /> 
    </mvc:interceptor> 
    </mvc:interceptors> 
    <mvc:default-servlet-handler/> 

    <mvc:resources location="/resources/" mapping="/resources/**"/> 

    <bean id="validator" 
    class="com.xyz.validator.ABCValidator"/> 
    <bean id="modifyService" 
    class="com.xyz.service.ModifyPreferencesService"/> 

    <bean id="abcService" 
    class="com.xyz.service.ABCEvaluationService"/> 
    <bean id="listIncident" 
    class="java.utilArrayList"/> 

    //Code for InternalResourceViewer 
    </beans> 

感謝

+0

這兩個類包含哪些包?你是如何配置''和'

+0

是的,我配置了xml文件。它一直在工作,直到我只有一個類使用bean/list。在第二次使用中,我只能得到例外。這兩個類都有不同的包。 – King

+0

你能顯示你的完整的xml文件嗎 – TSKSwamy

回答

0

Spring有收集的古怪處理對象。它假設你要求一些bean,它們都實現了一些通用接口。自動裝配集合需要使用其名稱。

此外: - 使用泛型。 - 使用Spring Boot而不是手動配置(使用過時的版本)。 - 使用構造函數注入而不是字段注入來使代碼更易於測試和維護。

+0

但是,這也發生在modifyService bean上。 – King

+0

@金啊,那麼看起來你有多個問題。但是,如果您正在學習,我建議您使用Boot,以便您不必處理所有這些細節。 – chrylis

+0

我在做這個項目來學習這個。我真的不能放棄。我想了解自動裝配。它是如何工作的,只有在我創造一些東西時纔會發生。如果它適用於這個bean,我會理清這個列表。請幫忙。 – King

相關問題