- 作者简介
- 内容提要
- 关于本书
- 路线图
- 代码规范与下载
- 作者在线
- 封面插图简介
- 前言
- 译者序
- 致谢
- 第1部分 Spring 的核心
- 第1章 Spring 之旅
- 第2章 装配 Bean
- 第3章 高级装配
- 第4章 面向切面的 Spring
- 第2部分 Web 中的 Spring
- 第5章 构建 Spring Web 应用程序
- 第6章 渲染 Web 视图
- 第7章 Spring MVC 的高级技术
- 第8章 使用 Spring Web Flow
- 第9章 保护 Web 应用
- 第3部分 后端中的 Spring
- 第10章 通过 Spring 和 JDBC 征服数据库
- 第11章 使用对象-关系映射持久化数据
- 第12章 使用 NoSQL 数据库
- 第13章 缓存数据
- 第14章 保护方法应用
- 第4部分 Spring 集成
- 第15章 使用远程服务
- 第16章 使用 Spring MVC 创建 REST API
- 第17章 Spring消息
- 第18章 使用 WebSocket 和 STOMP 实现消息功能
- 第19章 使用 Spring 发送 Email
- 第20章 使用 JMX 管理 Spring Bean
- 第21章 借助 Spring Boot 简化 Spring 开发
12.1.1 启用 MongoDB
为了有效地使用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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论