乐趣区

关于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>

退出移动版