31.2.2 MongoTemplate
Spring数据MongoDB提供了一个 MongoTemplate 与Spring JdbcTemplate 设计非常相似的 类。与 JdbcTemplate 一样,Spring Boot为您自
动配置bean以注入模板,如下所示:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
private final MongoTemplate mongoTemplate;
@Autowired
public MyBean(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
// ...
}
有关完整的详细信息,请参阅 MongoOperations Javadoc。
31.2.3 Spring数据MongoDB存储库
Spring数据包括MongoDB的存储库支持。与前面讨论的JPA存储库一样,基本原则是基于方法名称自动构造查询。
实际上,Spring Data JPA和Spring Data MongoDB共享相同的公共基础结构。您可以从前面获取JPA示例,假设 City 现在是Mongo数据类而
不是JPA @Entity ,它的工作方式相同,如下例所示:
package com.example.myapp.domain;
import org.springframework.data.domain.*;
import org.springframework.data.repository.*;
public interface CityRepository extends Repository<City, Long> {
Page<City> findAll(Pageable pageable);
City findByNameAndStateAllIgnoringCase(String name, String state);
}
您可以使用 @EntityScan 注释自定义文档扫描位置。
31.2.4嵌入式Mongo
Spring Boot为Embedded Mongo提供自动配置 。要在Spring Boot应用程序中使用它,请
在 de.flapdoodle.embed:de.flapdoodle.embed.mongo 上添加依赖项。
可以通过设置 spring.data.mongodb.port 属性来配置Mongo侦听的端口。要使用随机分配的空闲端口,请使用值0.
MongoAutoConfiguration 创建的 MongoClient 将自动配置为使用随机分配的端口。
如果未配置自定义端口,则嵌入式支持默认使用随机端口(而不是27017)。
如果类路径上有SLF4J,则Mongo生成的输出会自动路由到名
为 org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongo 的记录器。
您可以声明自己的 IMongodConfig 和 IRuntimeConfig beans来控制Mongo实例的配置和日志路由。