30. 使用NoSQL技术

Spring Data提供了额外的项目,帮助你访问各种NoSQL技术,包括:MongoDB,Neo4J,Elasticsearch,Solr,Redis,Gemfire,Cassandra,Couchbase和LDAP。Spring Boot为Redis、MongoDB、Neo4j、Elasticsearch、Solr Cassandra、Couchbase和LDAP提供了自动配置,你可以使用其他项目,但是你必须自己配置它们,请参阅projects.spring.io/spring-data的适当参考文档。

30.1 Redis

Redis是一个缓存、消息代理和功能丰富的键值存储,Spring Boot提供了Lettuce和Jedis客户端库的基本自动配置,以及Spring Data Redis提供的在它们之上的抽象。

有一个spring-boot-starter-data-redis “Starter”,可以方便地收集依赖项,默认情况下,它使用Lettuce,该starter同时处理传统应用程序和reactive应用程序。

我们还提供了一个spring-boot-starter-data-redis-reactive “Starter”,以便与具有reactive支持的其他存储保持一致。

30.1.1 连接到Redis

可以像注入任何其他Spring Bean一样注入自动配置的RedisConnectionFactoryStringRedisTemplate或vanilla RedisTemplate实例,默认情况下,该实例试图连接到localhost:6379上的Redis服务器,下面的清单显示了这样一个bean的示例:

@Component
public class MyBean {private StringRedisTemplate template;@Autowiredpublic MyBean(StringRedisTemplate template) {this.template = template;}// ...}

你还可以注册任意数量的bean,这些bean实现LettuceClientConfigurationBuilderCustomizer用于更高级的定制,如果你使用Jedis,也可以使用JedisClientConfigurationBuilderCustomizer

如果你添加了任何自动配置类型的自己的@Bean,它替换默认值(在RedisTemplate的情况下除外,当排除值是基于bean名称时,则替换为RedisTemplate,而不是它的类型),默认情况下,如果commons-pool2在类路径上,就会得到一个连接池工厂。

30.6 Elasticsearch

Elasticsearch是一个开源、分布式、实时搜索和分析引擎,Spring Boot为Elasticsearch提供了基本的自动配置,上面的抽象由Spring Data Elasticsearch提供,有一个spring-boot-starter-data-elasticsearch “Starter”可以方便地收集依赖项,Spring Boot也支持Jest。

30.6.1 使用Jest连接到Elasticsearch

如果类路径上有Jest,则可以注入一个自动配置的JestClient,该客户端默认以localhost:9200为目标,你可以进一步调整客户端的配置方式,如下面的示例所示:

spring.elasticsearch.jest.uris=http://search.example.com:9200
spring.elasticsearch.jest.read-timeout=10000
spring.elasticsearch.jest.username=user
spring.elasticsearch.jest.password=secret

你还可以注册任意数量的bean,这些bean实现HttpClientConfigBuilderCustomizer,用于更高级的定制,下面的示例调优其他HTTP设置:

static class HttpSettingsCustomizer implements HttpClientConfigBuilderCustomizer {@Overridepublic void customize(HttpClientConfig.Builder builder) {builder.maxTotalConnection(100).defaultMaxTotalConnectionPerRoute(5);}}

要完全控制注册,定义一个JestClient bean。

30.6.2 使用Spring Data连接到Elasticsearch

要连接到Elasticsearch,必须提供一个或多个集群节点的地址,可以通过设置spring.data.elasticsearch.cluster-nodes属性来指定一个逗号分隔的host:port列表的地址。有了这个配置,一个ElasticsearchTemplateTransportClient就可以像其他任何Spring bean一样被注入,如下面的示例所示:

spring.data.elasticsearch.cluster-nodes=localhost:9300
@Component
public class MyBean {private final ElasticsearchTemplate template;public MyBean(ElasticsearchTemplate template) {this.template = template;}// ...}

如果你添加自己的ElasticsearchTemplateTransportClient @Bean,它会替换默认。

30.6.3 Spring Data Elasticsearch存储库

Spring Data包括对Elasticsearch的存储库支持,与前面讨论的JPA存储库一样,基本原则是根据方法名称为你自动构造查询。

事实上,Spring Data JPA和Spring Data Elasticsearch共享相同的公共基础设施,你可以以前面的JPA示例为例,假设City现在是Elasticsearch @Document类,而不是JPA @Entity,它的工作方式是相同的。

有关Spring Data Elasticsearch的详细信息,请参阅参考文档。

Spring Boot 参考指南(使用NoSQL技术)相关推荐

  1. Spring Boot参考指南

    Spring Boot参考指南 作者 菲利普·韦伯,戴夫 Syer,约什 长,斯特凡 尼科尔,罗布 绞车,安迪·威尔金森,马塞尔 Overdijk,基督教 杜普伊斯,塞巴斯蒂安·德勒兹,迈克尔·西蒙斯 ...

  2. Spring Boot 参考指南(运行你的应用程序)

    19. 运行你的应用程序 将你的应用程序打包为jar并使用嵌入式HTTP服务器的最大优点之一是,你可以像对待其他应用程序一样运行应用程序,调试Spring Boot应用程序也很简单,你不需要任何特殊的 ...

  3. [Spring Boot 2]整合持久层技术

    持久层技术,简单来说,就是通过操纵对象来操作数据库.(具体见前言部分) 本期博客继续深入Spring Boot技术,值得一提的是,尽管Spring Boot操作起来还是不错的,看都看明白,但还是强烈建 ...

  4. erp开发和java开发区别_Java程序员求职必学:Spring boot学习指南!

    黑马程序员上海中心 学姐微信:CZBKSH 关注 咳咳,今天学姐就来和你们说说Spring对于Java程序员的重要性. 首先,Spring 官网首页是这么介绍自己的--"Spring: th ...

  5. Spring boot 实战指南(二):Mybatis、动态绑定、多数据源、分页插件、Mybatis-Plus

    文章目录 一.整合Mybatis 1.搭建数据库环境 2.基于注解整合Mybatis (1)创建项目 (2)具体代码实现 (3)测试 3.基于xml整合Mybatis 4.Mybatis的动态SQL ...

  6. 从零搭建Spring Boot脚手架:开篇以及技术选型1

    1. 前言 目前Spring Boot已经成为主流的Java Web开发框架,熟练掌握Spring Boot并能够根据业务来定制Spring Boot成为一个Java开发者的必备技巧,但是总是零零碎碎 ...

  7. Spring Boot 参考文档翻译part3

    3.使用Spring Boot 本节将详细介绍如何使用Spring Boot.它涵盖了构建系统.自动配置以及如何运行应用程序等主题.我们还将介绍一些Spring Boot最佳实践.尽管Spring B ...

  8. Spring Boot 实现 MySQL 读写分离技术

    你好,我是田哥 有同学私信我,如何实现读写分离,Spring Boot项目,数据库是MySQL,持久层用的是MyBatis. 其实,实现这个很简单的,首先思考一个问题: 在高并发的场景中,关于数据库都 ...

  9. Spring Boot 中文参考指南

    Spring Boot 版本 2.7.8 原文:https://docs.spring.io/spring-boot/docs/2.7.8/reference/htmlsingle/ - 笔者注: S ...

最新文章

  1. 项目范围和项目范围管理
  2. 普通用户程序使用保留端口 error while loading shared libraries
  3. DNA Alignment
  4. AngularJS 学习
  5. c++ 数组引用_在 Solidity中使用值数组以降低 gas 消耗
  6. ASP.NET Web API 处理架构
  7. html基础电子文档,html基础
  8. php pdo query 空判断,检查空结果(php,pdo,mysql)
  9. php新窗口打开链接,wordpress如何设置在新窗口打开链接
  10. ps分辨率像素英寸和厘米的区别_南南带你免费学习超级强大的做图软件-PS(第一章:第二节)...
  11. 给自己一个anchor,挑战不可能
  12. Python网页抓取教程
  13. mac虚拟机哪个好用 mac双系统和虚拟机哪个好
  14. TeXLive2021+TeXStudio安装及配置,亲测有效!
  15. [附源码]Java计算机毕业设计SSM房屋租赁管理系统设计
  16. WPS中如何删除中文保留英文
  17. linux 关闭虚拟内存,Linux关于虚拟内存
  18. 作为人才我们为什么要和几个猎头保持良好的关系?
  19. laravel--6 eloquent查询作用域
  20. 亚马逊服务器怎么修改登录密码,将亚马逊aws的ec2服务器的登陆方式改为密码登陆...

热门文章

  1. 使用IntelliJ IDEA 13搭建Android集成开发环境(图文教程)
  2. “此iPhone不能使用,因为Apple Mobile Device服务没有启动”解决办法
  3. GTK+, Qt, wxWidgets compare
  4. 用控制台实现的计算器思路完成过程(一)
  5. Linux系统Python配置MySQL详细教程
  6. 打造新型智慧城市标杆 金华跻身中国城市信息化50强
  7. Javascript 将html转成pdf,下载,支持多页哦(html2canvas 和 jsPDF)
  8. 【C#】第3章学习要点(三)--常用类和结构的用法
  9. 插件推荐(持续更新)
  10. 15.文件系统——软RAID的实现(二)(mdadm,watch, RAID1)