Spring認證中國教育管理中心-Spring Data MongoDB教程
原標題:Spring Data MongoDB參考文件(內容來源:Spring中國教育管理中心)
參考文件的這一部分解釋了 Spring Data MongoDB 提供的核心功能。
“ MongoDB 支援”介紹了 MongoDB 模組功能集。
“ MongoDB Repositories ”介紹了對 MongoDB 的儲存庫支援。
11. 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>
3. 將 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> </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 + "]" ; } }
您還需要一個主應用程式來執行:
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" ); } }
執行主程式時,前面的示例會產生以下輸出:
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" ); } }
這種方法允許您使用標準
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; } }
要訪問
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= " xmlns:xsi= " xmlns:mongo= " xsi:schemaLocation= " > <!-- Default bean name is 'mongo' --> <mongo:mongo-client host= "localhost" port= "27017"/> </beans>
以下示例顯示了更高階的配置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>
以下示例顯示了使用副本集的配置:
示例
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>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69981720/viewspace-2841775/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring中國教育管理中心-官方認證優勢Spring
- spring4.2+mongodb2.6+spring-data-mongodb1.8.2 整合SpringMongoDBDB2
- Spring認證-Spring 安全架構專題教程Spring架構
- spring-data-mongodb常用操作SpringMongoDB
- Spring Data MongoDB支援GridFSSpringMongoDB
- Spring Data 教程 - RedisSpringRedis
- 「Spring認證」Spring 框架概述Spring框架
- 中科聲龍榮獲《中國質量認證監督管理中心》認證證書
- Spring Data Solr 教程: 排序SpringSolr排序
- Spring認證_什麼是Spring GraphQL?Spring
- Spring認證_什麼是Spring Security?Spring
- Spring認證_什麼是Spring GraphQLSpring
- 「Spring認證」什麼是Spring GraphQL?Spring
- spring data mongodb配置+月庫實現SpringMongoDB
- Spring Data MongoDB cascade save on DBRef objectsSpringMongoDBObject
- SpringBoot 整合 Spring Data Mongodb 操作 MongoDB 詳解Spring BootMongoDB
- 「Spring認證」Spring Bean 定義教學SpringBean
- 「Spring認證」如何開始學習Spring?Spring
- Spring Security認證提供程式Spring
- 在Spring Data MongoDB中實現關係建模 - spring.ioSpringMongoDB
- Spring security(四)-spring boot +spring security簡訊認證+redis整合Spring BootRedis
- Spring Data MongoDB 操作 document DB 的詳細示例SpringMongoDB
- Spring security(三)---認證過程Spring
- spring security許可權認證Spring
- Spring Security認證器實現Spring
- 五、Spring Boot整合Spring Security之認證流程2Spring Boot
- 【認證與授權】Spring Security系列之認證流程解析Spring
- Spring Security原始碼分析一:Spring Security認證過程Spring原始碼
- spring security 認證原始碼跟蹤Spring原始碼
- spring security 自定義認證登入Spring
- MongoDB 入門教程系列之二:使用 Spring Boot 操作 MongoDBMongoDBSpring Boot
- Spring+ Spring cloud + SSO單點登入應用認證SpringCloud
- spring-data-mongodb多資料庫訪問實現SpringMongoDB資料庫
- Spring-Data-Mongodb資料庫連線程式碼示例SpringMongoDB資料庫線程
- Spring Boot:整合Spring Data JPASpring Boot
- Spring Data JpaSpring
- Spring Security系列之認證過程(六)Spring
- 【Spring Security】實現多種認證方式Spring