Spring Data 项目的主要目标是更轻松地构建基于 Spring 的应用程序,这些应用程序使用新的数据访问技术,例如非关系数据库、map-reduce 框架和基于云的数据服务。
Spring Data MongoDB 项目旨在为新数据存储提供熟悉且一致的基于 Spring 的编程模型,同时保留特定于存储的特性和功能。 Spring Data MongoDB 项目提供与 MongoDB 文档数据库的集成。 Spring Data MongoDB 的关键功能区域是一个以 POJO 为中心的模型,用于与 MongoDB Document
交互并轻松编写存储库样式的数据访问层。
该项目受 Spring 行为准则管辖。通过参与,您应该遵守本行为准则。请将不可接受的行为报告至 [email protected]。
以下是在 Java 中使用 Spring Data Repositories 的应用程序的快速预览:
public interface PersonRepository extends CrudRepository < Person , Long > {
List < Person > findByLastname ( String lastname );
List < Person > findByFirstnameLike ( String firstname );
}
@ Service
public class MyService {
private final PersonRepository repository ;
public MyService ( PersonRepository repository ) {
this . repository = repository ;
}
public void doWork () {
repository . deleteAll ();
Person person = new Person ();
person . setFirstname ( "Oliver" );
person . setLastname ( "Gierke" );
repository . save ( person );
List < Person > lastNameResults = repository . findByLastname ( "Gierke" );
List < Person > firstNameResults = repository . findByFirstnameLike ( "Oli*" );
}
}
@ Configuration
@ EnableMongoRepositories
class ApplicationConfig extends AbstractMongoClientConfiguration {
@ Override
protected String getDatabaseName () {
return "springdata" ;
}
}
添加 Maven 依赖:
< dependency >
< groupId >org.springframework.data</ groupId >
< artifactId >spring-data-mongodb</ artifactId >
< version >${version}</ version >
</ dependency >
如果您希望获得即将发布的主要版本的最新快照,请使用我们的 Maven 快照存储库并声明适当的依赖项版本。
< dependency >
< groupId >org.springframework.data</ groupId >
< artifactId >spring-data-mongodb</ artifactId >
< version >${version}-SNAPSHOT</ version >
</ dependency >
< repository >
< id >spring-snapshot</ id >
< name >Spring Snapshot Repository</ name >
< url >https://repo.spring.io/snapshot</ url >
</ repository >
项目 wiki 上提供了如何从 Spring Data 的早期版本升级的说明。按照发行说明部分中的链接查找您要升级到的版本。
Spring Data 遇到问题?我们很乐意提供帮助!
检查参考文档和 Javadocs
学习 Spring 基础知识 – Spring Data 基于 Spring Framework 构建,请查看 spring.io 网站以获取大量参考文档。如果您刚刚开始使用 Spring,请尝试其中一个指南。
如果您要升级,请查看变更日志以了解“新的和值得注意的”功能。
提出问题 - 我们监控 stackoverflow.com 中是否有带有spring-data-mongodb
标签的问题。您还可以在 Gitter 上与社区聊天。
在 github.com/spring-projects/spring-data-mongodb/issues 报告 Spring Data MongoDB 的错误。
Spring Data 使用 Github 作为问题跟踪系统来记录错误和功能请求。如果您想提出问题,请遵循以下建议:
在记录错误之前,请搜索问题跟踪器以查看是否有人已经报告了该问题。
如果该问题尚不存在,请创建一个新问题。
请在问题报告中提供尽可能多的信息,我们想知道您正在使用的 Spring Data 版本、JVM 版本、Stacktrace 等。
如果您需要粘贴代码,或包含堆栈跟踪,请使用 Markdown 代码围栏``。
spring.io 站点包含多个指南,演示如何逐步使用 Spring Data:
使用 MongoDB 访问数据是一个非常基本的指南,向您展示如何创建简单的应用程序以及如何使用存储库访问数据。
使用 REST 访问 MongoDB 数据是创建通过存储库公开 MongoDB 中存储的数据的 REST Web 服务的指南。
Spring Data Examples 包含更详细地解释特定功能的示例项目。
您不需要从源代码构建来使用 Spring Data。二进制文件可在 repo.spring.io 中获取,并可使用上述 Maven 配置从 Maven 进行访问。
笔记 | Gradle 的配置与 Maven 类似。 |
最好的入门方法是在 start.spring.io 上使用 MongoDB 创建一个 Spring Boot 项目。点击此链接构建命令式应用程序,点击此链接构建响应式应用程序。
但是,如果您想尝试最新、最好的,Spring Data MongoDB 可以使用 Maven 包装器和最低限度的 JDK 17(JDK 下载)轻松构建。
为了构建 Spring Data MongoDB,您需要下载并安装 MongoDB 发行版。
安装 MongoDB 后,您需要启动 MongoDB 服务器。将环境变量设置为 MongoDB 安装目录(例如MONGODB_HOME
)很方便。
要运行完整的测试套件,需要 MongoDB 副本集。
要运行 MongoDB 服务器,请从命令行输入以下命令:
$ $MONGODB_HOME /bin/mongod --dbpath $MONGODB_HOME /runtime/data --ipv6 --port 27017 --replSet rs0
...
" msg " : " Successfully connected to host "
MongoDB 服务器启动后,您应该看到消息 ( msg
)“已成功连接到主机”。
请注意mongod
命令的--dbpath
选项。您可以将其设置为您喜欢的任何内容,但在本例中,我们将绝对路径设置为 MongoDB 安装目录(在$MONGODB_HOME
中)下的子目录 ( runtime/data/
)。
MongoDB服务器首次启动时只需初始化一次MongoDB副本集。要初始化副本集,请启动 mongo 客户端:
$ $MONGODB_HOME /bin/mongo
MongoDB server version: 6.0.0
...
然后输入以下命令:
mongo > rs.initiate({ _id: ' rs0 ' , members: [ { _id: 0, host: ' 127.0.0.1:27017 ' } ] })
最后,在基于 UNIX 的系统(例如 Linux 或 Mac OS X)上,您可能需要调整ulimit
。如果需要,您可以使用以下命令调整ulimit
(32768 只是建议):
$ ulimit -n 32768
您可以再次使用ulimit -a
来验证“打开文件”的ulimit
设置是否正确。
现在您已准备好构建 Spring Data MongoDB。只需输入以下mvnw
(Maven Wrapper) 命令:
$ ./mvnw clean install
如果您想使用常规mvn
命令进行构建,则需要 Maven v3.8.0 或更高版本。
如果您希望提交拉取请求,另请参阅 CONTRIBUTING.adoc,特别是,请在第一次重要更改之前签署贡献者协议。
构建文档也会构建项目,而无需运行测试。
$ ./mvnw clean install -Pantora
生成的文档可从target/antora/site/index.html
获取。
Spring Data MongoDB 是在 Apache 2.0 许可证下发布的开源软件。