在上一章中,我们介绍了如何利用 Spring Security 的内置 JDBC 支持。在本章中,我们将研究 Spring Data 项目,以及如何利用 JPA 对关系数据库执行身份验证。我们还将探讨如何使用 MongoDB 对文档数据库执行身份验证。本章的示例代码基于 Chapter 4 中的 Spring Security 设置, 基于 JDBC 的身份验证,并且已更新以重构对 SQL 的需求并使用 ORM 进行所有数据库交互。
在本章的课程中,我们将讨论以下主题:
- Some of the basic concepts related to the Spring Data project
- Utilizing Spring Data JPA to authenticate against a relational database
- Utilizing Spring Data MongoDB to authenticate against a document database
- How to customize Spring Security for more flexibility when dealing with Spring Data integration
- Understanding the Spring Data project
Spring Data 项目的使命是为数据访问提供熟悉且一致的基于 Spring 的编程模型,同时仍保留底层数据提供者的特殊特征。
以下只是这个 Spring Data 项目中的一些强大功能:
- Powerful repository and custom object-mapping abstractions
- Dynamic query derivation from repository method names
- Implementation of domain base classes, providing basic properties
- Support for transparent auditing (created and last changed)
- The ability to integrate custom repository code
- Easy Spring integration via Java-based configuration and custom XML namespaces
- Advanced integration with Spring MVC controllers
- Experimental support for cross-store persistence
该项目简化了数据访问技术、关系和非关系数据库、map-reduce 框架和基于云的数据服务的使用。这个总括项目包含许多特定于给定数据库的子项目。这些项目是通过与许多支持这些令人兴奋的技术的公司和开发人员合作开发的。还有许多社区维护的模块和其他相关模块,包括 JDBC Support 和 Apache Hadoop。
下表描述了构成 Spring Data 项目的主要模块:
模块 |
说明 |
Spring Data Commons |
将核心 Spring 概念应用于所有 Spring Data 项目 |
春季数据宝石火 |
提供从 Spring 应用程序对 Gemfire 的轻松配置和访问 |
春季数据 JPA |
使实现基于 JPA 的存储库变得容易 |
Spring 数据键值 |
基于地图的存储库和 SPI,可以轻松构建用于键值存储的 Spring Data 模块 |
春季数据 LDAP |
为 Spring LDAP 提供 Spring Data repository 支持 |
春季数据 MongoDB |
MongoDB 的基于 Spring 的对象文档支持和存储库 |
春季数据休息 |
将 Spring Data 存储库导出为超媒体驱动的 RESTful 资源 |
Spring Data Redis |
提供从 Spring 应用程序对 Redis 的轻松配置和访问 |
Apache Cassandra 的 Spring 数据 |
Apache Cassandra 的 Spring Data 模块 |
Apache Solr 的 Spring 数据 |
Apache Solr 的 Spring Data 模块 |