2012-03-14 55 views
0

我在Java的桌面應用程序連接到通過Hibernate MySQL數據庫。突然變得「NoSuchBeanDefinitionException沒有名爲豆」用正確的CONFIGS

我對配置下列文件:

  • pom.xml的,在這裏我把一些東西,數據庫配置文件
  • [APP_NAME] _context.xml,在這裏我把主要的配置,包括豆類與數據源
  • [APP_NAME] _hibernate.cfg.xml,在這裏我把映射到表

的應用程序是幾乎完成,一切工作100%,但後來我決定CH通過配置來創建DB配置文件(在此之前,pom.xml不包含任何配置文件)。 所以我在pom.xml中創建了配置文件,並從context.xml中引用它們。一切正常。然後,我想將SQL打印到終端進行調試,出於某種原因,它沒有被打印。所以我改變了數據庫配置,直到我找對了。一切正常。然後,我把它改成它是SQL打印的變化,這是以前工作的確切配置之前的方式,但現在我得到這個錯誤的豆,這是永遠存在的,並沒有改變。

下面是一些代碼,以便更好地理解它:

在context.xml中的數據源:(使用$ {}被過濾並替換字符串存儲在pom.xml的真實值)

<bean id="desenvolvimentoDS" class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName"> 
     <value>org.hibernate.dialect.MySQLDialect</value> 
    </property> 
    <property name="url"> 
     <value>${db.mysql.url}</value> 
    </property> 
    <property name="username"> 
     <value>${db.mysql.username}</value> 
    </property> 
    <property name="password"> 
     <value>${db.mysql.password}</value> 
    </property> 
</bean> 

當前配置文件正在使用,在pom.xml中:

<profile> 
     <id>HOMOLOGACAO</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <properties> 
      <profile.group>HOMOLOGACAO</profile.group> 
      <maven.test.skip>true</maven.test.skip> 
      <db.show_sql>true</db.show_sql> 
      <db.format_sql>false</db.format_sql> 
      <db.mysql.url>[filtered]</db.mysql.url> 
      <db.mysql.username>[filtered]</db.mysql.username> 
      <db.mysql.password>[filtered]</db.mysql.password> 
     </properties> 
    </profile> 

的pom.xml的資源部分,即告訴Spring那些context.xml中的字符串過濾的配置文件值:

<resources> 
     <resource> 
      <directory>src/main/resources/configuracao</directory> 
      <filtering>true</filtering> 
     </resource> 
    </resources> 

最後,這是給我的錯誤豆:

<bean name="servidorUDP" 
    class="br.uff.pgci.sgca.gateway.server.ServidorUDP" 
    scope="singleton"/> 

恢復,我創建了數據庫配置文件,組織結構,改變了一些數據庫配置來回,突然我m得到「NoSuchBeanDefinitionException沒有名爲ServidorUDP的bean」錯誤。

難道這被放錯位置的換行符,或空格,或錯誤打開/關閉XML標籤引起的?我敢肯定這是不是這樣,但我們永遠不知道...

回答

1

正是你放置你的[APP_NAME] _context.xml?您在pom中引入的過濾器是否跳過了bean定義xml?

檢查這個Maven的POM參考http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html,它可能給你一些線索。

+0

哦,資源目錄錯了,我的經理告訴我把「src/main/resources/configuracao」而不是「src/main/resources」,可能這就是破壞它的原因。這很有趣,因爲他是知道Spring,Hibernate和所有這些東西的人,我幾乎只是複製和粘貼hibernate的東西。謝謝! – 2012-03-14 17:34:36

+0

很酷。很好,你解決了這個問題。 – raddykrish 2012-03-14 17:37:53

1

最可能的解釋是,含有servidorUDP上下文文件沒有找到,可能是因爲你對配置文件的更改已停止該文件被複制到類路徑上的正確位置。查看目標/類目錄的內容,以確保文件處於您期望的位置,並檢查日誌以查看它已加載的證據。 Spring會記錄在某個時間點找到的所有bean的列表,尋找並確認哪些bean丟失。

+0

只有一個上下文文件,其中包含數據庫信息和我正在使用的所有bean。我對配置結構的唯一真正改變是將db配置從hibernate.cfg.xml文件移動到pom,並讓上下文引用pom來獲取值。 – 2012-03-14 17:25:49

相關問題