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开发环境搭建详解 #### 一、开发环境配置 **系统环境:** Windows **集成开发环境(IDE):** IntelliJ IDEA **数据库:** MongoDB 为了确保项目的顺利进行,我们需要首先安装并配置好这些...
对于初学者而言,掌握MongoDB的基本操作及与C#语言的结合使用,无疑是步入大数据和Web应用开发领域的敲门砖。 #### 下载与安装MongoDB MongoDB的官方下载地址为http://www.mongodb.org/downloads,在此可获取适用...
案例分析:在提供的压缩包"11-爬虫开发阶段-爬虫基础-MongoDB数据库-爬虫Scrapy框架和案例"中,可能包含实际的Scrapy项目代码和MongoDB使用示例。这些案例可以帮助你更深入地理解如何将Scrapy与MongoDB集成,包括...
通过对MongoDB的基础配置、CRUD操作、索引管理以及如何使用Spring Data MongoDB进行开发的学习,可以快速地将MongoDB应用于实际项目中,提高开发效率和系统的性能表现。希望这份快速上手指南能够帮助读者更好地理解...
了解这些安装步骤对初学者来说至关重要,因为正确的安装配置是后续使用MongoDB的基础。 接下来,我们看到几个Java源代码文件: 1. ToyotoApi.java和ToyotoNeedleApi.java:这些文件可能包含了与某个特定项目或框架...
这里的`MongoRepository`是SpringData MongoDB提供的基础接口,`User`是我们的实体类,`String`是主键类型。`findByUsername`方法是自定义查询,SpringData会自动将其转换为MongoDB的查询语句。 接着,我们来看实体...
本篇将深入探讨如何利用Egg.js和MongoDB开发一个完整的商城系统。 一、Egg.js基础 Egg.js是基于Koa.js构建的,提供了一套完整的开发规范和工具链。它的核心特性包括: 1. **插件机制**:Egg.js通过插件进行功能...
总的来说,这个压缩包提供了在Windows 64位环境下快速部署MongoDB的基础,并为Java开发者提供了详细的API参考,使他们能够高效地利用MongoDB进行数据存储和处理。在实际开发中,结合这个安装包和API文档,你将能够...
在现代Web应用开发中,Spring Boot和MongoDB的结合是一个非常流行的选择,因为Spring Boot提供了强大的框架支持,而MongoDB则作为一个高效的文档型数据库,能够处理大量非结构化数据。本教程将深入探讨如何将Spring ...
Java连接MongoDB主要依赖于MongoDB的Java驱动程序,这是一个允许Java应用程序与MongoDB...在实际开发中,确保正确配置JAR文件,理解连接字符串的格式,以及熟练运用驱动提供的API,是成功实现Java与MongoDB交互的基础。
这是MongoDB .NET驱动程序的核心组件,提供了与MongoDB服务器通信的基础架构。它包括连接管理、认证、心跳检测、错误处理等功能。例如,MongoClient类就是这个库的一部分,它负责建立到MongoDB服务器的连接,执行...
在实际开发中,引入`mongodb.jar`后,开发者需要在项目配置中添加对这个库的依赖,通常是通过Maven或Gradle这样的构建工具完成。然后,就可以编写Java代码来实现与MongoDB的交互,例如: ```java MongoClient ...
Spring Data MongoDB 是一个项目,它将 Spring 框架的核心概念应用于使用 MongoDB 文档样式数据存储的解决方案开发中。该项目提供了一个“模板”作为存储和查询文档的高级抽象层,其设计思想与 Spring Framework 中...
1. **mongodb-driver-core-3.5.0.jar**:这是MongoDB Java驱动程序的核心模块,提供了与MongoDB服务器通信的基础架构。它包含连接管理、命令执行、数据序列化和反序列化等基本功能。这个版本3.5.0是MongoDB官方推荐...
总的来说,Java连接MongoDB主要依赖于这三个JAR包,它们共同构成了Java开发MongoDB应用的基础框架。正确理解和使用这些库可以让你轻松地在Java项目中集成MongoDB的功能,实现高效的数据存储和检索。
- **使用扩展**:通过`\MongoDB\Client`类实例化MongoDB客户端,执行数据库操作。 ### 总结 MongoDB作为一款强大的NoSQL数据库,不仅具备了非关系型数据库的灵活性,还提供了接近关系型数据库的功能特性,使得其在...
MongoDB的Java驱动程序主要分为两个版本:旧版的2.x系列和新版的3.x及更高版本(也称为Java驱动程序或“legacy”驱动程序)。这两个版本的API设计有所不同,但都提供了与MongoDB交互的基本功能。在"mongodb所需jar...
在IT行业中,Spring框架与MongoDB的集成是常见的开发需求,尤其在4.2版本时,Spring提供了对MongoDB的强大支持。本知识点将详细介绍Spring 4.2与MongoDB的集成,以及涉及到的相关jar包。 首先,Spring 4.2是Spring...
本文将从NoSQL的基础概念出发,逐步深入介绍MongoDB的核心特性、架构、安装、数据操作和管理等方面的知识点。 首先,我们需要了解NoSQL的基本概念。NoSQL指的是“不仅仅是SQL”,它是对于传统关系型数据库的一种...
“Connection Accepted”消息在MongoDB的日志中频繁出现可能表明存在连接管理问题,这部分内容分析了其原因及应对策略。 ### **41. 数据文件为何如此庞大(Whyaremydatafilessolarge?)** 如果发现MongoDB的数据...