Spring Boot 参考指南(使用NoSQL技术)
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一样注入自动配置的RedisConnectionFactory
、StringRedisTemplate
或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
列表的地址。有了这个配置,一个ElasticsearchTemplate
或TransportClient
就可以像其他任何Spring bean一样被注入,如下面的示例所示:
spring.data.elasticsearch.cluster-nodes=localhost:9300
@Component
public class MyBean {private final ElasticsearchTemplate template;public MyBean(ElasticsearchTemplate template) {this.template = template;}// ...}
如果你添加自己的ElasticsearchTemplate
或TransportClient
@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技术)相关推荐
- Spring Boot参考指南
Spring Boot参考指南 作者 菲利普·韦伯,戴夫 Syer,约什 长,斯特凡 尼科尔,罗布 绞车,安迪·威尔金森,马塞尔 Overdijk,基督教 杜普伊斯,塞巴斯蒂安·德勒兹,迈克尔·西蒙斯 ...
- Spring Boot 参考指南(运行你的应用程序)
19. 运行你的应用程序 将你的应用程序打包为jar并使用嵌入式HTTP服务器的最大优点之一是,你可以像对待其他应用程序一样运行应用程序,调试Spring Boot应用程序也很简单,你不需要任何特殊的 ...
- [Spring Boot 2]整合持久层技术
持久层技术,简单来说,就是通过操纵对象来操作数据库.(具体见前言部分) 本期博客继续深入Spring Boot技术,值得一提的是,尽管Spring Boot操作起来还是不错的,看都看明白,但还是强烈建 ...
- erp开发和java开发区别_Java程序员求职必学:Spring boot学习指南!
黑马程序员上海中心 学姐微信:CZBKSH 关注 咳咳,今天学姐就来和你们说说Spring对于Java程序员的重要性. 首先,Spring 官网首页是这么介绍自己的--"Spring: th ...
- Spring boot 实战指南(二):Mybatis、动态绑定、多数据源、分页插件、Mybatis-Plus
文章目录 一.整合Mybatis 1.搭建数据库环境 2.基于注解整合Mybatis (1)创建项目 (2)具体代码实现 (3)测试 3.基于xml整合Mybatis 4.Mybatis的动态SQL ...
- 从零搭建Spring Boot脚手架:开篇以及技术选型1
1. 前言 目前Spring Boot已经成为主流的Java Web开发框架,熟练掌握Spring Boot并能够根据业务来定制Spring Boot成为一个Java开发者的必备技巧,但是总是零零碎碎 ...
- Spring Boot 参考文档翻译part3
3.使用Spring Boot 本节将详细介绍如何使用Spring Boot.它涵盖了构建系统.自动配置以及如何运行应用程序等主题.我们还将介绍一些Spring Boot最佳实践.尽管Spring B ...
- Spring Boot 实现 MySQL 读写分离技术
你好,我是田哥 有同学私信我,如何实现读写分离,Spring Boot项目,数据库是MySQL,持久层用的是MyBatis. 其实,实现这个很简单的,首先思考一个问题: 在高并发的场景中,关于数据库都 ...
- Spring Boot 中文参考指南
Spring Boot 版本 2.7.8 原文:https://docs.spring.io/spring-boot/docs/2.7.8/reference/htmlsingle/ - 笔者注: S ...
最新文章
- 项目范围和项目范围管理
- 普通用户程序使用保留端口 error while loading shared libraries
- DNA Alignment
- AngularJS 学习
- c++ 数组引用_在 Solidity中使用值数组以降低 gas 消耗
- ASP.NET Web API 处理架构
- html基础电子文档,html基础
- php pdo query 空判断,检查空结果(php,pdo,mysql)
- php新窗口打开链接,wordpress如何设置在新窗口打开链接
- ps分辨率像素英寸和厘米的区别_南南带你免费学习超级强大的做图软件-PS(第一章:第二节)...
- 给自己一个anchor,挑战不可能
- Python网页抓取教程
- mac虚拟机哪个好用 mac双系统和虚拟机哪个好
- TeXLive2021+TeXStudio安装及配置,亲测有效!
- [附源码]Java计算机毕业设计SSM房屋租赁管理系统设计
- WPS中如何删除中文保留英文
- linux 关闭虚拟内存,Linux关于虚拟内存
- 作为人才我们为什么要和几个猎头保持良好的关系?
- laravel--6 eloquent查询作用域
- 亚马逊服务器怎么修改登录密码,将亚马逊aws的ec2服务器的登陆方式改为密码登陆...
热门文章
- 使用IntelliJ IDEA 13搭建Android集成开发环境(图文教程)
- “此iPhone不能使用,因为Apple Mobile Device服务没有启动”解决办法
- GTK+, Qt, wxWidgets compare
- 用控制台实现的计算器思路完成过程(一)
- Linux系统Python配置MySQL详细教程
- 打造新型智慧城市标杆 金华跻身中国城市信息化50强
- Javascript 将html转成pdf,下载,支持多页哦(html2canvas 和 jsPDF)
- 【C#】第3章学习要点(三)--常用类和结构的用法
- 插件推荐(持续更新)
- 15.文件系统——软RAID的实现(二)(mdadm,watch, RAID1)