关于spring:Spring认证中国教育管理中心Spring-Data-MongoDB教程

原题目:Spring Data MongoDB参考文档(内容起源:Spring中国教育管理中心)

参考文档的这一部分解释了 Spring Data MongoDB 提供的外围性能。

“ MongoDB 反对”介绍了 MongoDB 模块功能集。

“ MongoDB Repositories ”介绍了对 MongoDB 的存储库反对。

  1. MongoDB 反对
    MongoDB 反对蕴含宽泛的性能:

Spring 配置反对应用基于 Java 的@Configuration类或用于 Mongo 驱动程序实例和正本集的 XML 命名空间。
MongoTemplate 在执行常见的 Mongo 操作时进步生产力的助手类。包含文档和 POJO 之间的集成对象映射。
异样转换为 Spring 的可移植数据拜访异样层次结构。
功能丰富的对象映射与 Spring 的转换服务集成。
基于正文的映射元数据可扩大以反对其余元数据格式。
持久性和映射生命周期事件。
基于 Java 的查问、规范和更新 DSL。
存储库接口的主动实现,包含对自定义查找器办法的反对。
QueryDSL 集成以反对类型平安查问。
对 JPA 实体的跨存储持久性反对,其字段通明地长久化并应用 MongoDB 检索(不举荐应用 – 将被删除而不替换)。
天文空间整合。
对于大多数工作,您应该应用MongoTemplate或 Repository 反对,它们都利用了丰盛的映射性能。MongoTemplate是寻找拜访性能的中央,例如递增计数器或长期 CRUD 操作。MongoTemplate还提供了回调办法,以便您能够轻松获取低级 API 工件,例如
com.mongodb.client.MongoDatabase间接与 MongoDB 通信。各种 API 工件的命名约定的指标是复制根底 MongoDB Java 驱动程序中的命名约定,以便您能够轻松地将现有常识映射到 Spring API。

11.1.入门
疏导设置工作环境的一种简略办法是在STS 中创立一个基于 Spring 的我的项目。

首先,您须要设置一个正在运行的 MongoDB 服务器。无关如何启动 MongoDB 实例的阐明,请参阅MongoDB 疾速入门指南。装置后,启动 MongoDB 通常只需运行以下命令:${MONGO_HOME}/bin/mongod

在 STS 中创立 Spring 我的项目:

转到 File → New → Spring Template Project → Simple Spring Utility Project,而后在呈现提醒时按 Yes。而后输出我的项目和包名称,例如org.spring.mongodb.example.
将以下内容增加到 pom.xml 文件dependencies元素:
<dependencies> <!– other dependency elements omitted –> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>3.2.6</version> </dependency> </dependencies>

Spring认证中国教育管理中心-Spring Data MongoDB教程

  1. 将 pom.xml 中 Spring 的版本改为<spring.framework.version>5.3.11</spring.framework.version>

4.将 Maven 的 Spring Milestone 存储库的以下地位增加到您pom.xml的<dependencies/>元素中,使其与您的元素处于同一级别:

<repositories> <repository> <id>spring-milestone</id> <name>Spring Maven MILESTONE Repository</name> <url>https://repo.spring.io/libs-m…</url> </repository> </repositories>

存储库也可在此处浏览。

您可能还心愿将日志记录级别设置为DEBUG以查看一些附加信息。为此,请编辑log4j.properties文件以具备以下内容:

log4j.category.org.springframework.data.mongodb=DEBUG log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %40.40c:%4L – %m%n

而后你能够创立一个Person类来长久化:

package org.spring.mongodb.example; public class Person { private String id; private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getId() { return id; } public String getName() { return name; } public int getAge() { return age; } @Override public String toString() { return “Person [id=” + id + “, name=” + name + “, age=” + age + “]”; } }

Spring认证中国教育管理中心-Spring Data MongoDB教程
您还须要一个主应用程序来运行:

package org.spring.mongodb.example; import static org.springframework.data.mongodb.core.query.Criteria.where; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Query; import com.mongodb.client.MongoClients; public class MongoApp { private static final Log log = LogFactory.getLog(MongoApp.class); public static void main(String[] args) throws Exception { MongoOperations mongoOps = new MongoTemplate(MongoClients.create(), “database”); mongoOps.insert(new Person(“Joe”, 34)); log.info(mongoOps.findOne(new Query(where(“name”).is(“Joe”)), Person.class)); mongoOps.dropCollection(“person”); } }

Spring认证中国教育管理中心-Spring Data MongoDB教程
运行主程序时,后面的示例会产生以下输入:

10:01:32,062 DEBUG apping.MongoPersistentEntityIndexCreator: 80 – Analyzing class class org.spring.example.Person for index information. 10:01:32,265 DEBUG ramework.data.mongodb.core.MongoTemplate: 631 – insert Document containing fields: [_class, age, name] in collection: Person 10:01:32,765 DEBUG ramework.data.mongodb.core.MongoTemplate:1243 – findOne using query: { “name” : “Joe”} in db.collection: database.Person 10:01:32,953 INFO org.spring.mongodb.example.MongoApp: 25 – Person [id=4ddbba3c0be56b7e1b210166, name=Joe, age=34] 10:01:32,984 DEBUG ramework.data.mongodb.core.MongoTemplate: 375 – Dropped collection [database.person]

即便在这个简略的例子中,也有几件事须要留神:

您能够MongoTemplate通过应用规范com.mongodb.client.MongoClient对象和要应用的数据库名称来实例化 Spring Mongo 的地方帮忙器类。
映射器针对规范 POJO 对象工作,无需任何额定的元数据(只管您能够抉择提供该信息。请参阅此处。)。
约定用于解决id字段,将其转换为ObjectId存储在数据库中的工夫。
映射约定能够应用字段拜访。请留神,Person该类只有 getter。
如果结构函数参数名称与存储文档的字段名称匹配,则它们用于实例化对象
11.2.示例库
有一个蕴含多个示例的GitHub 存储库,您能够下载并试用这些示例,以理解该库的工作原理。

11.3.应用 Spring 连贯到 MongoDB
应用 MongoDB 和 Spring 时的首要任务之一是
com.mongodb.client.MongoClient应用 IoC 容器创建对象。有两种次要办法能够做到这一点,一种是应用基于 Java 的 bean 元数据,另一种是应用基于 XML 的 bean 元数据。以下各节将探讨两者。

对于那些不相熟如何配置应用基于Java bean的元数据,而不是基于XML的元数据Spring容器,请参阅参考文档的高级介绍这里还有具体的文档在这里。

11.3.1.应用基于 Java 的元数据注册 Mongo 实例
以下示例显示了应用基于 Java 的 bean 元数据注册 a 实例的示例
com.mongodb.client.MongoClient:

示例
56.com.mongodb.client.MongoClient应用基于 Java 的 bean 元数据注册对象

@Configuration public class AppConfig { / Use the standard Mongo driver API to create a com.mongodb.client.MongoClient instance. */ public @Bean MongoClient mongoClient() { return MongoClients.create(“mongodb://localhost:27017”); } }

Spring认证中国教育管理中心-Spring Data MongoDB教程
这种办法容许您应用规范
com.mongodb.client.MongoClient实例,容器应用 Spring 的MongoClientFactoryBean. 与com.mongodb.client.MongoClient间接实例化实例FactoryBean相比,它还为容器提供了一个ExceptionTranslator实现,该实现将 MongoDB 异样转换为 Spring 的可移植DataAccessException层次结构中的异样,用于应用正文正文的数据拜访类@Repository。Spring 的 DAO 反对个性中@Repository形容了这种层次结构和应用。

以下示例显示了一个基于 Java 的 bean 元数据的示例,该元数据反对对带@Repository正文的类进行异样转换:

示例
57.com.mongodb.client.MongoClient应用 Spring注册对象MongoClientFactoryBean并启用 Spring 的异样转换反对

@Configuration public class AppConfig { / Factory bean that creates the com.mongodb.client.MongoClient instance */ public @Bean MongoClientFactoryBean mongo() { MongoClientFactoryBean mongo = new MongoClientFactoryBean(); mongo.setHost(“localhost”); return mongo; } }

Spring认证中国教育管理中心-Spring Data MongoDB教程
要拜访
com.mongodb.client.MongoClient由MongoClientFactoryBean其余@Configuration类或您本人的类创立的对象,请应用private @Autowired MongoClient mongoClient;字段。

11.3.2.应用基于 XML 的元数据注册 Mongo 实例
尽管您能够应用 Spring 的传统<beans/>XML 命名空间向
com.mongodb.client.MongoClient容器注册 的实例,但 XML 可能十分简短,因为它是通用的。XML 命名空间是配置罕用对象(例如 Mongo 实例)的更好代替办法。mongo 命名空间容许您创立 Mongo 实例服务器地位、正本集和选项。

要应用 Mongo 命名空间元素,您须要援用 Mongo 架构,如下所示:

示例 58.配置 MongoDB 的 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/data/mongo https://www.springframework.org/schema/data/mongo/spring-mongo.xsd http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd”> <!– Default bean name is ‘mongo’ –> <mongo:mongo-client host=”localhost” port=”27017″/> </beans>

Spring认证中国教育管理中心-Spring Data MongoDB教程
以下示例显示了更高级的配置MongoClientSettings(请留神,这些不是推荐值):

示例 59.应用 XML 模式配置
com.mongodb.client.MongoClient对象MongoClientSettings

<beans> <mongo:mongo-client host=”localhost” port=”27017″> <mongo:client-settings connection-pool-max-connection-life-time=”10″ connection-pool-min-size=”10″ connection-pool-max-size=”20″ connection-pool-maintenance-frequency=”10″ connection-pool-maintenance-initial-delay=”11″ connection-pool-max-connection-idle-time=”30″ connection-pool-max-wait-time=”15″ /> </mongo:mongo-client> </beans>

Spring认证中国教育管理中心-Spring Data MongoDB教程
以下示例显示了应用正本集的配置:

示例
60.com.mongodb.client.MongoClient应用正本集配置对象的XML 模式

<mongo:mongo-client id=”replicaSetMongo” replica-set=”rs0″> <mongo:client-settings cluster-hosts=”127.0.0.1:27017,localhost:27018″ /> </mongo:mongo-client>

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理