`

Mongodb开发配置及基础类

阅读更多

1、配置:

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

xsi:schemaLocation="

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.7.xsd"

default-lazy-init="true">

 

<!-- 定义mongo对象,对应的是mongodb官方jar包中的Mongo,replica-set设置集群副本的ip地址和端口 -->

<mongo:mongo host="${mongo.host}" port="${mongo.port}">

<mongo:options connections-per-host="800"

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

connect-timeout="80000"

max-wait-time="150000"

auto-connect-retry="true"

socket-keep-alive="true"

socket-timeout="150000"

slave-ok="true"

write-number="1"

write-timeout="1000"

write-fsync="true"  />

</mongo:mongo> 

 

<bean id="mongoMappingContext" class="org.springframework.data.mongodb.core.mapping.MongoMappingContext" />

 

<!-- mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 -->

<mongo:db-factory id="factory" mongo-ref="mongo"

dbname="${mongo.dbname}" username="${mongo.username}" password="${mongo.password}" />

 

<!-- 映射转换器,扫描back-package目录下的文件(当前使用注解方式),根据注释,把它们作为mongodb的一个collection的映射 -->

<bean id="mongoConverter"

class="org.springframework.data.mongodb.core.convert.MappingMongoConverter">

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

<constructor-arg name="mappingContext" ref="mongoMappingContext" />

<!-- 实体反序列化时使用属性而非字段 spring data mongodb 1.7不支持此属性 -->

<!-- <property name="useFieldAccessOnly" value="false" /> -->

</bean>

 

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

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

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

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

<property name="writeResultChecking" value="EXCEPTION" />

</bean>

 

<!-- mongodb bean的仓库目录,会自动扫描扩展了MongoRepository接口的接口进行注入 -->

<mongo:repositories base-package="com.***.mongo.repository"

factory-class="com.***.repository.support.BaseRepositoryFactoryBean"

mongo-template-ref="mongoTemplate">

</mongo:repositories>

</beans>

 

2、相关的代码:

(1)基础类BaseRepository:

 */

@NoRepositoryBean

public interface BaseRepository<T,ID extends Serializable> extends MongoRepository<T, ID> {

}

(2)BaseRepository实现类:BaseRepositoryImpl

public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleMongoRepository<T, ID> implements BaseRepository<T,ID> {

private final MongoOperations mongoOperations;

public BaseRepositoryImpl(MongoEntityInformation<T, ID> metadata, MongoOperations mongoOperations) {

super(metadata, mongoOperations);

this.mongoOperations = mongoOperations;

}

}

(3)BaseRepositoryFactoryBean类:动态注入相关的配置信息

public class BaseRepositoryFactoryBean<R extends MongoRepository<T, I>, T, I extends Serializable> extends

MongoRepositoryFactoryBean<R, T, I> {

      @Override

public RepositoryFactorySupport getFactoryInstance(

MongoOperations operations) {

return new EntityRepositoryFactory<T, Serializable>(operations);

}

 

private static class EntityRepositoryFactory<T, I extends Serializable> extends MongoRepositoryFactory {

 

private MongoOperations mongoOperations;

 

public EntityRepositoryFactory(MongoOperations mongoOperations) {

super(mongoOperations);

this.mongoOperations = mongoOperations;

}

            @SuppressWarnings({ "unchecked", "rawtypes" })

   @Override

   protected Object getTargetRepository(RepositoryMetadata metadata) {

   MongoEntityInformation<?, Serializable> entityInformation = getEntityInformation(metadata.getDomainType());

   return new BaseRepositoryImpl(entityInformation, mongoOperations);

   }

 

@Override

   protected Class<?> getRepositoryBaseClass(RepositoryMetadata metadata) {

   return BaseRepository.class;

   }

}

}

 

3、使用方法:

@Autowired

private BaseRepository<**Entity, String> baseRepository;

 

 

 

分享到:
评论

相关推荐

    基于java的mongodb开发环境搭建

    ### 基于Java的MongoDB开发环境搭建详解 #### 一、开发环境配置 **系统环境:** Windows **集成开发环境(IDE):** IntelliJ IDEA **数据库:** MongoDB 为了确保项目的顺利进行,我们需要首先安装并配置好这些...

    MongoDB实战开发 - 零基础学习

    对于初学者而言,掌握MongoDB的基本操作及与C#语言的结合使用,无疑是步入大数据和Web应用开发领域的敲门砖。 #### 下载与安装MongoDB MongoDB的官方下载地址为http://www.mongodb.org/downloads,在此可获取适用...

    爬虫开发阶段-爬虫基础-MongoDB数据库-爬虫Scrapy框架和案例.zip

    案例分析:在提供的压缩包"11-爬虫开发阶段-爬虫基础-MongoDB数据库-爬虫Scrapy框架和案例"中,可能包含实际的Scrapy项目代码和MongoDB使用示例。这些案例可以帮助你更深入地理解如何将Scrapy与MongoDB集成,包括...

    MongoDB 配置以及简单CRUD快速上手

    通过对MongoDB的基础配置、CRUD操作、索引管理以及如何使用Spring Data MongoDB进行开发的学习,可以快速地将MongoDB应用于实际项目中,提高开发效率和系统的性能表现。希望这份快速上手指南能够帮助读者更好地理解...

    mongodb安装文档和工具类.zip

    了解这些安装步骤对初学者来说至关重要,因为正确的安装配置是后续使用MongoDB的基础。 接下来,我们看到几个Java源代码文件: 1. ToyotoApi.java和ToyotoNeedleApi.java:这些文件可能包含了与某个特定项目或框架...

    SpringBoot mongoDB 项目 [免费]

    这里的`MongoRepository`是SpringData MongoDB提供的基础接口,`User`是我们的实体类,`String`是主键类型。`findByUsername`方法是自定义查询,SpringData会自动将其转换为MongoDB的查询语句。 接着,我们来看实体...

    用egg.js+mongodb开发的一个商城系统.zip

    本篇将深入探讨如何利用Egg.js和MongoDB开发一个完整的商城系统。 一、Egg.js基础 Egg.js是基于Koa.js构建的,提供了一套完整的开发规范和工具链。它的核心特性包括: 1. **插件机制**:Egg.js通过插件进行功能...

    windows 64位mongodb安装包+java api文档

    总的来说,这个压缩包提供了在Windows 64位环境下快速部署MongoDB的基础,并为Java开发者提供了详细的API参考,使他们能够高效地利用MongoDB进行数据存储和处理。在实际开发中,结合这个安装包和API文档,你将能够...

    Springboot开发-将springboot与mongodb数据库相结合.zip

    在现代Web应用开发中,Spring Boot和MongoDB的结合是一个非常流行的选择,因为Spring Boot提供了强大的框架支持,而MongoDB则作为一个高效的文档型数据库,能够处理大量非结构化数据。本教程将深入探讨如何将Spring ...

    java连接mongodb的jar包

    Java连接MongoDB主要依赖于MongoDB的Java驱动程序,这是一个允许Java应用程序与MongoDB...在实际开发中,确保正确配置JAR文件,理解连接字符串的格式,以及熟练运用驱动提供的API,是成功实现Java与MongoDB交互的基础。

    C#访问MongoDB DLL

    这是MongoDB .NET驱动程序的核心组件,提供了与MongoDB服务器通信的基础架构。它包括连接管理、认证、心跳检测、错误处理等功能。例如,MongoClient类就是这个库的一部分,它负责建立到MongoDB服务器的连接,执行...

    mongodb需要的jar

    在实际开发中,引入`mongodb.jar`后,开发者需要在项目配置中添加对这个库的依赖,通常是通过Maven或Gradle这样的构建工具完成。然后,就可以编写Java代码来实现与MongoDB的交互,例如: ```java MongoClient ...

    Spring Data MongoDB中文文档

    Spring Data MongoDB 是一个项目,它将 Spring 框架的核心概念应用于使用 MongoDB 文档样式数据存储的解决方案开发中。该项目提供了一个“模板”作为存储和查询文档的高级抽象层,其设计思想与 Spring Framework 中...

    mongodb.zip

    1. **mongodb-driver-core-3.5.0.jar**:这是MongoDB Java驱动程序的核心模块,提供了与MongoDB服务器通信的基础架构。它包含连接管理、命令执行、数据序列化和反序列化等基本功能。这个版本3.5.0是MongoDB官方推荐...

    Java连接mongoDB需要的jar包

    总的来说,Java连接MongoDB主要依赖于这三个JAR包,它们共同构成了Java开发MongoDB应用的基础框架。正确理解和使用这些库可以让你轻松地在Java项目中集成MongoDB的功能,实现高效的数据存储和检索。

    MongoDB入门.pdf

    - **使用扩展**:通过`\MongoDB\Client`类实例化MongoDB客户端,执行数据库操作。 ### 总结 MongoDB作为一款强大的NoSQL数据库,不仅具备了非关系型数据库的灵活性,还提供了接近关系型数据库的功能特性,使得其在...

    mongodb所需jar

    MongoDB的Java驱动程序主要分为两个版本:旧版的2.x系列和新版的3.x及更高版本(也称为Java驱动程序或“legacy”驱动程序)。这两个版本的API设计有所不同,但都提供了与MongoDB交互的基本功能。在"mongodb所需jar...

    spring4.2 mongodb 全部jar包

    在IT行业中,Spring框架与MongoDB的集成是常见的开发需求,尤其在4.2版本时,Spring提供了对MongoDB的强大支持。本知识点将详细介绍Spring 4.2与MongoDB的集成,以及涉及到的相关jar包。 首先,Spring 4.2是Spring...

    10天掌握MongoDB

    本文将从NoSQL的基础概念出发,逐步深入介绍MongoDB的核心特性、架构、安装、数据操作和管理等方面的知识点。 首先,我们需要了解NoSQL的基本概念。NoSQL指的是“不仅仅是SQL”,它是对于传统关系型数据库的一种...

    mongoDB说明文档

    “Connection Accepted”消息在MongoDB的日志中频繁出现可能表明存在连接管理问题,这部分内容分析了其原因及应对策略。 ### **41. 数据文件为何如此庞大(Whyaremydatafilessolarge?)** 如果发现MongoDB的数据...

Global site tag (gtag.js) - Google Analytics