spring-data-mongodb报错

今天在使用spring-data-mongodb进行mongo操作的时候遇到下面这个错误

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoTemplate' defined in class path resource [spring.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.data.mongodb.core.MongoTemplate]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/objenesis/ObjenesisStd

at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:288)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1049)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:953)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:490)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)

at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607)

at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)

at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)

at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:106)

at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:57)

at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:100)

at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:248)

at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:124)

at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:148)

... 27 more


这是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:mongo="http://www.springframework.org/schema/data/mongo"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">


       <mongo:mongo id="mongo" replica-set="192.168.47.129:27017">

           <mongo:options

                   connections-per-host="8"

                   threads-allowed-to-block-for-connection-multiplier="3"

                   connect-timeout="10000"

                   max-wait-time="20000"

                   auto-connect-retry="true"

                   socket-keep-alive="true"

                   socket-timeout="1500"

                   write-number="1"

                   write-timeout="0"

                   write-fsync="true"/>

       </mongo:mongo>


       <!--mongo的连接工厂,dbname为连接的数据库名,没有则会自动创建一个,mongo-ref为关联的mongo实例 -->

       <mongo:db-factory dbname="users" mongo-ref="mongo"/>


       <!-- mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成 -->

       <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">

              <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>

       </bean>


</beans>


测试类

package com.dreyer.springMongodb.customer;


import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.mongodb.core.MongoTemplate;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;


import java.util.List;



/**

 * @author Dreyer

 * @description

 * @email [email protected]

 * @date 2016/1/13 15:10

 */

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = { "classpath:spring.xml","classpath:spring-mvc.xml" })

public class MainTest {

    @Autowired

    private MongoTemplate mongoTemplate;


    @Test

    public void test() {

        List<Customer> list = mongoTemplate.findAll(Customer.class);

        for (Customer customer : list) {

            System.out.println(customer.getFirstName());

        }

    }

}


spring-data-mongodb的版本为:1.8.2,spring的版本为:3.2.0

报错原因是因为spring-data-mongodb1.6以上的版本需要配置spring4.0以上

解决方案就是把spring版本改为4.1.6即可

你可能感兴趣的:(spring-data-mongodb报错)