2012-12-10 54 views
4

豆聲明我在關於類聲明的applicationContext.xml在applicationContext.xml中

問題在的applicationContext.xml我們需要指定所有來自應用程序的類? 例如 在我的小型Web應用程序中,我有一個實體類,服務類和DAO類。所以目前它被定義爲

<!-- Beans Declaration --> 
    <bean id="Employees" 
     class="net.test.model.Employees" /> 

<!-- User Service Declaration --> 
    <bean id=" 
     EmployeeService" class="net.test.employees.service.EmployeeService"> 
     <property name="employeesDAO" ref="EmployeeDAOImpl" /> 
    </bean> 

<!-- User DAO Declaration --> 
    <bean id="EmployeeDAO" class="net.test.employee.dao.EmployeeDAOImpl"> 
     <property name="sessionFactory" ref="SessionFactory" /> 
    </bean> 

所以,如果我有多個實體,服務和DAO類,我需要提applicationContext.xml所有這些類?

對此的任何洞察都非常明顯。

問候

更新1

ManagedBean

@ManagedBean(name="empMB") 
@Named 
@Scope("request") 
public class EmployeesManagedBean implements Serializable { 

,我有注入註釋

@Inject 
EmployeesService employeesService; 

在EmployeesService我有註解像

@Named 
public class EmployeesService implements IEmployeesService { 

@Inject 
EmployeesDAO employeesDAO; 

@Override 
public List<Employees> getEmployees() { 
    return getEmployeesDAO().getEmployees(); 
} 

終於在applicationContext.xml中我有

<context:component-scan base-package="net.test" /> 

現在的問題是,當我跑我的應用程序我得到

java.lang.NullPointerException at 
net.test.managed.bean.EmployeesManagedBean.getEmpList(EmployeesManagedBean.java:53) 

我在做什麼錯誤得到空指針異常

回答

3

在applicationContext.xml中,我們是否需要指定應用程序中的所有類 ?

號聲明模型類,如您net.test.model.Employees是沒有意義的,除非你需要一個原型一起工作,就像初始化它的價值的東西,但你可以直接在課堂上做到這一點,只是實例化。

因此,如果我有多個實體,服務和dao類,我需要 提及applicationContext.xml中的所有這些類嗎?

正如我之前解釋的,實體類沒有。服務和DAO是好的,因爲大部分時間你需要注入服務的DAO(這就是DI的要點)。但是,當然,如果您創建了3個DAO並且希望它們被注入到3個服務中,那麼請在您的Spring XML Bean定義文件(您稱爲applicationContext.xml)中提及它們。

但有一點,您可能想使用package scanning自動檢測和annotation based config以避免在Bean定義文件中寫入所有內容。

+0

感謝您的建議。我修改了我的applicationContext.xml和Java bean。我在我的問題中添加了更新1。你能否好好建議我做錯了什麼? Regards – user75ponic

+0

感謝您的輸入。我爲我遇到的問題創建了另一個[post](http://stackoverflow.com/questions/13796698/spring-inject-annotations-causing-nullpointer-exception)。問候 – user75ponic

0

理想情況是,另一種方式可以使用Spring Annotations,以便您不要在xml中添加多個條目。

2

應用程序上下文中的bean聲明是在應用程序容器中註冊bean。

如果bean未註冊,容器將無法依賴注入該類的任何實例,或將攔截器應用於該類的對象。

所以,除非不需要bean的參考的任何任務像攔截,或把它注射,或創建它的默認單對象,沒有必要宣佈它在applicationContext.xml

希望這有助於。

相關問題