2013-03-19 54 views
0

我做我的第一個進軍春,我收到以下錯誤嘗試在Eclipse中運行:春聲稱相同的類名是不同的

org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'model' must be of type [com.myCompany.project.Model], but was actually of type [com.myCompany.project.Model] 

代碼導致異常:

import com.myCompany.project.Model; 
// some code 
public Model getModel() { 
    ClassPathXmlApplicationContext applicationContext = 
      new ClassPathXmlApplicationContext("client-context.xml"); 
    return applicationContext.getBean("model", Model.class); 
} 

Spring xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <context:annotation-config /> 

    <bean id="model" class="com.myCompany.project.Model" /> 

</beans> 

client-context.xml位於項目/資源中,代碼i n project/src/main/

我認爲這是一個類路徑問題,但我不知道如何解決它。

+1

您的spring xml文件的類名中的小寫'model'是否爲拼寫錯誤? – 2013-03-19 13:21:45

回答

1

Java和Spring區分大小寫。這:

<bean id="model" class="com.myCompany.project.model" /> 

是不一樣的:

<bean id="model" class="com.myCompany.project.Model" /> 

我會想一些更好的名字。這些不是很有見地。

我不喜歡你這樣做的方式。你不應該有一個必須以這種方式訪問​​應用程序上下文的bean。你必須發佈更多的代碼才能確定,但​​你應該將該模型bean連接到需要它的對象,而不是做你正在做的事情。

做你所提議的唯一原因是如果與應用程序上下文交互的bean使用新的而不是Spring bean工廠創建。既然你剛剛開始使用Spring,我會建議讓Spring處理所有的依賴關係。

+1

但錯誤消息表明,這不是問題的正確,因爲它說實際類型是'com.myCompany.project.Model'與'M' – 2013-03-19 13:23:56

+0

這是實際上是什麼原因引起的問題?我想這個例外會保持區分大小寫。 – 2013-03-19 13:24:08

+1

其實這是我在這裏發佈的一個錯字。我的錯。因此,在例外情況下對錯字進行糾正。 – JoMo 2013-03-19 13:49:09

相關問題