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 hy.dreyer@qq.com

 * @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即可

转载于:https://my.oschina.net/dreyer/blog/610589

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当使用spring-boot-starter-data-mongodb时,如果启动时出现错误,可能有以下几个原因导致: 1. 依赖版本不匹配:请确认spring-boot-starter-data-mongodb的版本和其他相关依赖的版本是否兼容。可以通过查看官方文档或者其他资源来确认依赖的正确版本。 2. 配置错误:请检查application.properties或application.yml文件中与mongodb相关的配置项是否正确。包括数据库的连接地址、用户名、密码等。如果有特殊字符,可能需要进行转义。 3. 依赖缺失:如果启动时报错指明找不到相关的类或方法,可能是由于缺少依赖。请确认是否正确添加了spring-boot-starter-data-mongodb的依赖,并且没有遗漏其他必需的依赖。 4. 数据库连接问题:请确认mongodb数据库是否已经正确启动,并且可以通过提供的连接地址连接到数据库。可以尝试使用mongodb的官方客户端工具来测试连接的可用性。 5. 其他问题:如果以上情况都排除了,可以查看具体的错误日志或异常信息,尝试通过搜索引擎或开发社区寻找类似的问题和解决方案。 总之,在解决spring-boot-starter-data-mongodb启动报错时,需要仔细排查可能的原因,并逐一尝试解决,最终找到问题所在并进行修复。 ### 回答2: 当使用spring-boot-starter-data-mongodb启动项目时遇到错误,可能是由于以下几个原因导致的: 1. 缺少MongoDB依赖:确认在pom.xml文件中添加了正确的MongoDB依赖,例如: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> ``` 2. MongoDB的配置错误:检查application.properties或application.yml文件中的MongoDB配置,确保配置的是正确的MongoDB地址、端口和数据库名。 3. 缺少MongoDB的驱动程序:在pom.xml文件中添加MongoDB驱动程序的依赖,例如: ``` <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> </dependency> ``` 4. MongoDB连接身份验证错误:如果MongoDB设置了身份验证,需要在配置文件中添加相应的用户名和密码,确保登录凭据正确。 5. MongoDB服务未启动:检查MongoDB服务是否已经启动,可以通过命令行或者MongoDB可视化工具来确认。 如果以上步骤都正确无误,仍然无法启动项目并且出现报错,请检查报错信息,并且根据报错信息进一步排查和解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值