返回介绍

12.1.1 启用 MongoDB

发布于 2024-08-17 00:45:49 字数 3049 浏览 0 评论 0 收藏 0

为了有效地使用Spring Data MongoDB,我们需要在Spring配置中添加几个必要的bean。首先,我们需要配置MongoClient,以便于访问MongoDB数据库。同时,我们还需要有一个MongoTemplate bean,实现基于模板的数据库访问。此外,不是必须,但是强烈推荐启用Spring Data MongoDB的自动化Repository生成功能。

如下的程序清单展现了如何编写简单的Spring Data MongoDB配置类,它包含了上述的几个bean:

程序清单12.1 Spring Data MongoDB的必要配置

在上一章中,我们通过@EnableJpaRepositories注解,启用了Spring Data的自动化JPA Repository生成功能。与之类似,@EnableMongoRepositories为MongoDB实现了相同的功能。

除了@EnableMongoRepositories之外,程序清单12.1中还包含了两个带有@Bean注解的方法。第一个@Bean方法使用MongoFactoryBean声明了一个Mongo实例。这个bean将Spring Data MongoDB与数据库本身连接了起来(与使用关系型数据时DataSource所做的事情并没有什么区别)。尽管我们可以使用MongoClient直接创建Mongo实例,但如果这样做的话,就必须要处理MongoClient构造器所抛出的UnknownHostException异常。在这里,使用Spring Data MongoDB的MongoFactoryBean更加简单。因为它是一个工厂bean,因此MongoFactoryBean会负责构建Mongo实例,我们不必再担心UnknownHostException异常。

另外一个@Bean方法声明了MongoTemplate bean,在它构造时,使用了其他@Bean方法所创建的Mongo实例的引用以及数据库的名称。稍后,你将会看到如何使用MongoTemplate来查询数据库。即便不直接使用MongoTemplate,我们也会需要这个bean,因为Repository的自动化生成功能在底层使用了它。

除了直接声明这些bean,我们还可以让配置类扩展AbstractMongo-Configuration并重载getDatabaseName()和mongo()方法。如下的程序清单展现了如何使用这种配置方式。

程序清单12.2 借助@EnableMongoRepositories启用Spring Data MongoDB

这个新的配置类与程序清单12.1的功能是相同的,只不过在篇幅上更加简洁。最为显著的区别在于这个配置中没有直接声明MongoTemplate bean,当然它还是会被隐式地创建。我们在这里重载了getDatabaseName()方法来提供数据库的名称。mongo()方法依然会创建一个MongoClient的实例,因为它会抛出Exception,所以我们可以直接使用MongoClient,而不必再使用MongoFactoryBean了。

到目前为止,不管是使用程序清单12.1还是12.2,都为Spring Data MongoDB提供了一个运行配置,也就是说,只要MongoDB服务器运行在本地即可。如果MongoDB服务器运行在其他的机器上,那么可以在创建MongoClient的时候进行指定:

另外,MongoDB服务器有可能监听的端口并不是默认的27017。如果是这样的话,在创建MongoClient的时候,还需要指定端口:

如果MongoDB服务器运行在生产配置上,我认为你可能还启用了认证功能。在这种情况下,为了访问数据库,我们还需要提供应用的凭证。访问需要认证的MongoDB服务器稍微有些复杂,如下面的程序清单所示。

程序清单12.3 创建MongoClient来访问需要认证的MongoDB服务器

为了访问需要认证的MongoDB服务器,MongoClient在实例化的时候必须要有一个MongoCredential的列表。在程序清单12.3中,我们为此创建了一个MongoCredential。为了将凭证信息的细节放在配置类外边,它们是通过注入的Environment对象解析得到的。

为了使这个讨论更加完整,Spring Data MongoDB还支持通过XML来进行配置。你可能也知道,我更喜欢Java配置的方案。但是,如果你喜欢XML配置的话,如下的程序清单展现了如何使用mongo配置命名空间来配置Spring Data MongoDB。

程序清单12.4 Spring Data MongoDB提供了XML配置的方案

现在Spring Data MongoDB已经配置完成了,我们很快就可以使用它来保存和查询文档了。但首先,需要使用Spring Data MongoDB的对象-文档映射注解为Java领域对象建立到持久化文档的映射关系。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文