【问题标题】:Spring bean load error using spring-data-mongodb使用 spring-data-mongodb 的 Spring bean 加载错误
【发布时间】:2014-03-09 23:44:16
【问题描述】:

我们使用的是 Spring 3.2.0 版,现在在代码库中引入了 spring-data-mongodb 1.4.0 版。我尝试编写一个新的 spring 配置文件(mongo-config.xml),同时单独定义 mongodb 相关的 bean。

我的 Spring 配置如下:

    <?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:util="http://www.springframework.org/schema/util"
    xmlns:mongo="http://www.springframework.org/schema/data/mongo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
        http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.4.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<mongo:mongoid="replicaSetMongo"replica-set="localhost:10901,localhost:10902">
<mongo:optionsconnections-per-host="8"
ssl="false" />
</mongo:mongo>

<mongo:db-factoryid="xmlLogDbFactory"
mongo-ref="replicaSetMongo"
dbname="logs"
username="logs_owner"
password="logs_owner" />

<mongo:mapping-converter>
<mongo:custom-converters>
<mongo:converter>
<beanclass="com.utils.mongodb.dao.impl.SspLogsWriteConver ter"/>
</mongo:converter>
</mongo:custom-converters>
</mongo:mapping-converter>

<beanid="xmlLogTemplate"class="org.springframework.data.mongodb.core.MongoTempla te">
<constructor-argname="mongoDbFactory"ref="xmlLogDbFactory"/>
<constructor-argname="mongoConverter"ref="mappingConverter"/>
<propertyname="writeConcern">
<util:constantstatic-field="com.mongodb.WriteConcern.UNACKNOWLEDGED"/>
</property>
</bean>

</beans>

我在 JBoss 上部署了应用程序。但是 JBoss 在启动时给出了如下错误。有人可以帮我出什么问题吗? spring 版本和 spring-mongodb 版本之间是否存在不匹配?我注意到异常跟踪提到了 spring-beans-3.2.0 jar,即使问题出在 mongo-config.xml

Caused by: org.springframework.beans.factory.parsing.BeanDefi nitionParsingException: Configuration problem: Failed to import bean definitions from relative location [mongo-config.xml]
Offending resource: class path resource [spring/commonUtil-config.xml]; nested exception is org.springframework.beans.factory.BeanDefinitionSt oreException: Unexpected exception parsing XML document from class path resource [spring/mongo-config.xml]; nested exception is org.springframework.beans.FatalBeanException: Invalid NamespaceHandler class [org.springframework.data.mongodb.config.MongoNames paceHandler] for namespace [http://www.springframework.org/schema/data/mongo]: problem with handler class file or dependent class; nested exception is java.lang.NoClassDefFoundError: org/springframework/data/repository/config/RepositoryConfigurationExtension
at org.springframework.beans.factory.parsing.FailFast ProblemReporter.error(FailFastProblemReporter.java :68) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.beans.factory.parsing.ReaderCo ntext.error(ReaderContext.java:85) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.beans.factory.parsing.ReaderCo ntext.error(ReaderContext.java:76) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanD efinitionDocumentReader.importBeanDefinitionResour ce(DefaultBeanDefinitionDocumentReader.java:271) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanD efinitionDocumentReader.parseDefaultElement(Defaul tBeanDefinitionDocumentReader.java:196) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanD efinitionDocumentReader.parseBeanDefinitions(Defau ltBeanDefinitionDocumentReader.java:181) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanD efinitionDocumentReader.doRegisterBeanDefinitions( DefaultBeanDefinitionDocumentReader.java:140) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanD efinitionDocumentReader.registerBeanDefinitions(De faultBeanDefinitionDocumentReader.java:111) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.beans.factory.xml.XmlBeanDefin itionReader.registerBeanDefinitions(XmlBeanDefinit ionReader.java:493) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.beans.factory.xml.XmlBeanDefin itionReader.doLoadBeanDefinitions(XmlBeanDefinitio nReader.java:390) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.beans.factory.xml.XmlBeanDefin itionReader.loadBeanDefinitions(XmlBeanDefinitionR eader.java:334) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.beans.factory.xml.XmlBeanDefin itionReader.loadBeanDefinitions(XmlBeanDefinitionR eader.java:302) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanD efinitionDocumentReader.importBeanDefinitionResour ce(DefaultBeanDefinitionDocumentReader.java:255) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
... 36 more

【问题讨论】:

  • 您的类路径中似乎缺少此类 org/springframework/data/repository/config/RepositoryConfigurationExtension
  • @Sotirios :这个类是 spring-data-mongodb-1.4.0.RELEASE.jar 的一部分,它已经存在于我的 WEB-INF/lib 文件夹中。
  • 不,它来自 spring-data-commons
  • 我认为问题在于这个类是多个 jar 的一部分。我该如何解决? jar tvf ../standalone/deployments/app-ws.war/WEB-INF/lib/spring-data-mongodb-1.4.0.RELEASE.jar | grep RepositoryConfigurationExtension 3139 Fri Feb 08 04:14:40 PST 2013 org/springframework/data/mongodb/repository/config/MongoRepositoryConfigurationExtension.class

标签: java spring mongodb spring-data-mongodb


【解决方案1】:

此问题现已解决。我意识到,当 maven 下载 spring-data-mongodb 1.4 版 jar 时,我的存储库中下载了另一个 jar:spring-data-commons 1.7 版。

我将第二个 jar 复制到我的 WEB-INF/lib 文件夹,应用程序开始工作。

【讨论】:

    猜你喜欢
    • 2015-12-17
    • 2019-01-08
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多