自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Gabriel Wang的博客

曾就职于中国平安、Ericsson、拍拍贷,做大数据相关工作

  • 博客(91)
  • 收藏
  • 关注

原创 Spring整合Elasticsearch----脚本和运行时字段Scripted and runtime fields

Spring Data Elasticsearch支持脚本(scripted)字段和运行时(runtime)字段。有关此方面的详细信息,请参阅有关脚本的和。在Spring Data Elasticsearch的上下文中,你可以使用。

2024-03-20 11:31:40 1208

原创 Spring整合Elasticsearch----实体回调Entity Callbacks

Spring Data基础结构提供了钩子,用于在调用某些方法之前和之后修改实体。这些所谓的EntityCallback实例提供了一种方便的方式来检查并可能以回调风格修改实体。EntityCallback看起来很像一个专门的ApplicationListener。一些Spring Data模块发布特定于存储的事件(如BeforeSaveEvent),允许修改给定的实体。在某些情况下,例如在处理不可变类型时,这些事件可能会造成麻烦。

2024-03-19 11:05:07 1423

原创 Spring整合Elasticsearch----Elasticsearch操作

Spring Data Elasticsearch使用多个接口来定义可以针对Elasticsearch索引调用的操作(有关响应(reactive)接口的描述,请参阅这些接口对应于的结构。索引管理以及索引和映射的自动创建IndexOperations接口和提供的实现可以从ElasticsearchOperations实例中获得,例如通过调用operations.indexOps(clazz),用户可以在Elasticsearch集群中创建索引、放置映射或存储模板和别名信息。

2024-03-18 17:07:32 1022

原创 Spring Data的Repositories----Query by Example

本章介绍了Query by Example,并解释了如何使用它。Query by Example(QBE)是一种接口简单、用户友好的查询技术。它允许动态创建查询,不需要编写包含字段名的查询。事实上,QBE根本不需要您使用特定于存储的查询语言来编写查询。

2024-03-08 17:00:24 1044

原创 Spring整合MongoDB----Template API之保存、更新和删除Documents

MongoTemplate / ReactiveMongoTemplatge允许你保存、更新和删除域对象,并将这些对象映射到存储在MongoDB中的documents。命令式和反应式(reactive)API的API签名大部分相同,只是返回类型不同。当同步API使用void、single Object和List时,反应式(reactive)对应地由Mono< Void>, Mono< Object> and Flux组成。

2024-03-01 08:27:51 1166

原创 Spring Data的Repositories----存储库方法的null处理

从Spring Data 2.0开始,返回单个聚合实例的存储库CRUD方法使用Java 8的Optional来指示潜在的值缺失。或者,查询方法可以选择根本不使用包装类型。然后通过返回null来指示没有查询结果。保证返回collections, collection alternatives, wrappers和 streams的存储库方法永远不会返回null,而是返回相应的空表示。有关详细信息,请参阅章节“二十、存储库查询返回类型”。

2024-02-26 19:48:14 1085

原创 Spring Data的Repositories----投影Projections

Spring Data查询方法通常返回由存储库管理的聚合根(aggregate root)的一个或多个实例。但是,有时可能需要基于这些类型的某些属性来创建投影。Spring Data允许对专用的返回类型进行建模,以便更有选择地检索托管聚合(managed aggregates)的部分视图。参见一个存储库和聚合根类型,例如以下示例:聚合和存储库示例现在假设我们只想检索人的姓名属性。Spring Data提供了什么方法来实现这一点?本章的其余部分将回答这个问题。

2024-02-26 19:28:13 1030

原创 Spring整合MongoDB----Template API 查询Documents

你可以使用Query和Criteria类来表达查询。它们的方法名称反映了native MongoDB操作名称,如lt、lte、is和其他名称。Query和Criteria类遵循fluent API风格,因此你可以将多个方法标准和查询链接在一起,同时拥有易于理解的代码。为了提高可读性,静态导入可以避免在创建查询和条件实例时使用“new”关键字。你还可以使用BasicQuery从纯JSON字符串创建Query实例,如下例所示:例1:从纯JSON字符串创建查询实例。

2024-02-26 16:31:37 1492

原创 Spring整合MongoDB----Aggregation Framework支持

Spring Data MongoDB为MongoDB 2.2版引入的聚合框架提供了支持。有关更多信息,请参阅MongoDB的聚合框架和其他数据聚合工具的完整。

2024-02-26 15:49:01 1067

原创 Spring整合Kafka(二十一)----提示,技巧和例子

有关详细信息,请参阅。假设你希望始终从所有分区读取所有记录(例如,当使用compacted topic加载分布式缓存时),手动分配分区而不使用Kafka的组管理会很有用。如果希望使用属性配置序列化器/反序列化器,但又希望使用自定义的ObjectMapper,只需创建一个子类并将自定义映射器传递给super构造函数。如果Kafka事务提交失败,记录将被重新deliver,因此数据库更新应该是幂等的。KafkaTemplate会将自己的事务与DB的事务同步,提交/回滚发生在数据库的行为之后。

2024-01-29 21:14:16 1304

原创 Spring整合Kafka(十九)----Apache Kafka Streams支持

从1.1.4版本开始,Spring for Apache Kafka为Kafka Streams提供了非常好的支持。要从Spring应用程序中使用它,kafka-streams jar必须存在于类路径中。它是Spring for Apache Kafka项目的一个可选依赖项,不会自动下载。

2024-01-29 11:29:32 1790

原创 Spring整合Kafka(三)----接收消息

例如,如果你有3个topic,每topic5个分区,你希望使用concurrency=15,但是结果你只能看到5个活跃的consumer,每个consumer分配了每个topic的一个分区,留下10个空闲的consumer。此类采用RecordFilterStrategy的实现,在该实现中,你可以实现filter方法来发出消息是重复的并且应该丢弃的信号。另一个一个方便的方法getAllListenerContainers(),它返回所有容器的集合,包括由registry管理的容器和声明为bean的容器。

2024-01-08 09:34:56 1023 1

原创 Spring整合Elasticsearch----CDI集成

Spring Data Elasticsearch存储库也可以使用CDI功能进行设置。例1:Spring Data Elasticsearch库使用CDI。

2024-03-20 20:23:40 321

原创 Spring整合Elasticsearch----查询方法

设置为注解参数的String必须是一个有效的Elasticsearch JSON查询。从方法名称派生查询并不总是足够的,并且可能导致方法名称不可读。Elasticsearch模块支持所有基本的查询构建功能,如字符串查询、native搜索查询、基于条件的查询和从方法名派生的查询。以返回所有匹配的文档。因此,调用List为[“id1”、“id2”、“id3”]的方法将生成查询体。上面的方法名将被转换为下面的Elasticsearch json查询。例3:使用Collection参数的方法上的@Query注解。

2024-03-20 17:12:39 569

原创 Spring整合Elasticsearch----响应式Reactive存储库

Reactive Elasticsearch存储库支持建立在存储库中解释的核心存储库支持之上,利用由执行的提供的操作。Spring Data Elasticsearch响应式存储库支持使用Project Reactor作为其选择的响应式组合库。

2024-03-20 15:49:54 508

原创 Spring整合Elasticsearch----创建存储库实例

本文介绍如何为已定义的存储库接口创建实例和bean定义。

2024-03-20 14:34:31 299

原创 Spring整合Elasticsearch----Join-Type的实现

Spring Data Elasticsearch支持,用于创建相应的索引映射和存储相关信息。

2024-03-19 13:44:33 353

原创 Spring整合Elasticsearch----路由值Routing values

为了定义一个实体的自定义路由,Spring Data Elasticsearch提供了一个@Routing注解(重用之前@Id@Nullable--------21. 这将“路由”定义为路由规范2. 具有名称routing的属性如果注解的路由定义是纯字符串而不是SpEL表达式,则它被解析为实体的属性的名称,在本例中,它是routing属性。然后,此属性的值将用作使用该实体的所有请求的路由值。

2024-03-19 13:11:35 284

原创 Spring整合Elasticsearch----Elasticsearch审计Auditing

如果您的代码包含多个不同类型的AuditorAware bean,则必须提供bean的名称,作为@EnableElasticsearchAuditing注解的auditorAwareRef的参数。由于Id的存在并不是确定Elasticsearch中是否有新特征的充分标准,因此需要额外的信息。

2024-03-19 11:33:28 397

原创 Spring整合Elasticsearch----其他Elasticsearch操作支持

定义运行时字段的第一种方法是将定义添加到索引映射中(请参见这里要在Spring Data Elasticsearch中使用这种方法,用户必须提供一个包含相应定义的JSON文件,例如:例1:runtime-fields.json定义运行时字段的第二种方法是将定义添加到搜索查询中(请参见这里以下代码示例展示了如何使用Spring Data Elasticsearch进行此操作:这适用于Query接口的每一个实现。

2024-03-18 16:51:47 798

原创 Spring整合Elasticsearch----Reactive Elasticsearch响应式操作

ReactiveElasticsearchOperations是使用ReactiveElasticsearchClient对Elasticsearch集群执行高级命令的网关。ReactiveElasticsearchTemplate是ReactiveElasticsearchOperations的默认实现。要开始使用ReactiveElasticsearchOperations,需要了解要使用的实际客户端。有关客户端以及如何配置它的详细信息,请参阅。

2024-03-18 16:42:20 234

原创 Spring整合Elasticsearch----Elasticsearch存储库Repositories

本文包括Elasticsearch存储库实现的细节。例1:示例Book实体。

2024-03-17 11:34:31 215

原创 Spring整合Elasticsearch----Elasticsearch对象映射

MappingElasticsearchConverter使用元数据来驱动对象到文档的映射。元数据取自可以进行注解的实体属性。@Document:应用于类级别,表示该类是映射到数据库的候选类。最重要的属性是(查看API文档以获取完整的属性列表):indexName:存储此实体的索引的名称。它可以包含一个SpEL模板表达式,如"log-#{T(java.time.LocalDate).now().toString()}"createIndex:标志是否在存储库引导时创建索引。默认值为true。

2024-03-17 11:31:12 816

原创 Spring整合Elasticsearch----Elasticsearch客户端

本文演示了支持的Elasticsearch客户端实现的配置和使用。Spring Data Elasticsearch运行在一个连接到单个Elasticsearch节点或集群的Elasticsearch客户端上(由Elasticsearch客户端库提供)。虽然Elasticsearch客户端可以直接与集群一起工作,但使用Spring Data Elasticsearch的应用程序通常使用Elasticsearch操作和Elasticsearch存储库的更高级别抽象。

2024-03-11 13:18:40 368 1

原创 Spring整合MongoDB(十六)----CDI集成

存储库接口的实例通常由容器创建,在使用Spring Data时,Spring是最自然的选择。从1.3.0版本开始,Spring Data MongoDB附带了一个自定义的CDI扩展,允许你在CDI环境中使用存储库抽象。扩展是JAR的一部分。要激活它,请将Spring Data MongoDB JAR放入类路径中。Spring Data MongoDB CDI扩展选择可用的MongoTemplate作为CDI bean,并在容器请求存储库类型的bean时为Spring Data存储库创建代理。

2024-03-11 11:14:12 347

原创 Spring Data的Repositories----自定义存储库实现

当你想要自定义基本存储库行为以使所有存储库都受到影响时,上一节中描述的方法需要自定义每个存储库接口。要更改所有存储库的行为,可以创建一个扩展特定持久性技术存储库基类的实现。然后,该类充当存储库代理的自定义基类,如以下示例所示:自定义存储库基类该类需要有一个父类的构造函数,特定存储的存储库工厂实现使用该构造函数。如果存储库基类有多个构造函数,请重写采用EntityInformation加上特定于存储库的基础结构对象(如EntityManager或template类)的构造函数。

2024-03-11 10:52:16 649

原创 Spring整合MongoDB(十五)----MongoDB特有的数据操作方法

除了之外,还可以使用专门的方法更新数据。

2024-03-11 10:34:30 470

原创 Spring Data----对象映射基础Object Mapping Fundamentals

本节介绍Spring Data对象映射、对象创建、字段和属性访问、可变性和不变性的基本原理。请注意,本节仅适用于不使用底层数据存储(如JPA)的对象映射的Spring Data模块。此外,请务必了解特定于存储对象的映射,如索引、自定义列名或字段名等。SpringData对象映射的核心职责是创建域对象的实例,并将store-native数据结构映射到这些实例上。

2024-03-01 08:12:24 686

原创 Spring整合MongoDB----对象映射之创建索引

Spring Data MongoDB可以自动为用@Document注解的实体类型创建索引。从3.0版本起,必须显式启用索引创建,以防止对集合生命周期和性能产生不希望的影响。在应用程序启动时以及在应用程序运行时首次访问实体类型时,会自动为初始实体集创建索引。我们通常建议为基于应用程序的索引控制创建显式索引,因为Spring Data无法自动为在应用程序运行时重新创建的集合创建索引。

2024-03-01 07:49:23 281

原创 Spring整合MongoDB----对象映射之对象引用

在这种情况下,引用的实际对象或集合是在首次访问属性时解析的。这种方法允许链接类型不需要将链接值存储在拥有的(owning )document中,而是存储在引用的文档中,如下面的示例所示。@DocumentReference(lookup)允许定义与_id字段不同的过滤器查询,因此提供了一种灵活的方式来定义实体之间的引用,如下面的示例所示,其中书籍的Publisher通过其首字母缩略词而不是内部id来引用。它们可以是任何东西,一个值,一个完整的document,基本上是可以存储在MongoDB中的所有东西。

2024-03-01 07:48:40 562

原创 Spring整合MongoDB----对象映射之非包装类型

未包装实体用于在Java领域模型中设计值对象,其属性被展平(flattened)到父类的MongoDB Document中。

2024-03-01 07:47:18 335

原创 Spring整合MongoDB----对象映射之属性转换器

虽然基于类型的转换已经提供了影响目标存储中某些类型的转换和表示的方法,但当仅考虑特定类型的某些值或属性进行转换时,它会受到限制。基于属性的转换器允许以声明方式(通过@ValueConverter)或编程方式(通过为特定属性注册PropertyValueConverter)按每个属性配置转换规则。PropertyValueConverter可以将给定值转换为其存储表示形式(写入)和返回(读取),如下所示。额外的ValueConversionContext提供了额外的信息,例如映射元数据和直接读写方法。

2024-03-01 07:46:24 432

原创 Spring整合MongoDB----对象映射之基于类型的转换器

如果你编写的转换器的源类型和目标类型都是native类型,框架无法确定是将其视为读取转换器还是写入转换器。将转换器实例同时注册为两者可能会导致不需要的结果。例如,Converter是不明确的,尽管在写入时尝试将所有String实例转换为Long实例可能没有意义。为了使你能够强制基础结构(infrastructure)仅以一种方式注册转换器,框架提供了在转换器实现中使用的@ReadingConverter和@WritingConverter注解。

2024-03-01 07:45:32 417

原创 Spring整合MongoDB----对象映射之JSON Schema

从3.6版本开始,MongoDB支持根据提供的 JSON Schema验证documents的集合。在创建集合时,可以定义schema本身以及验证操作和级别,如下例所示:例1:示例JSON schema你可以通过指定schema document(即,通过使用Document API解析或构建document对象)或使用Spring Data的JSON schema实用程序在org.springframework.data.mongodb.core.schema中构建它来提供schema。

2024-02-29 21:57:52 581

原创 Spring整合MongoDB(十四)----Mongodb特有的查询方法

见定义查询方法。

2024-02-27 08:20:39 624

原创 Spring整合MongoDB(十三)----创建Repository实例

本文介绍如何为已定义的存储库接口创建实例和bean定义。

2024-02-27 07:59:10 110

原创 Spring整合MongoDB(十二)----MongoDB Repositories

见定义存储库接口。

2024-02-26 20:33:01 618

原创 Spring Data的Repositories----存储库查询返回类型

下表列出了Spring Data存储库通常支持的返回类型。但是,有关支持的返回类型的确切列表,请参阅特定存储的文档,因为此处列出的某些类型在特定存储中可能不受支持。地理空间类型(如GeoResult、GeoResults和GeoPage)仅适用于支持地理空间查询的数据存储。一些存储模块可以定义自己的结果包装器类型。

2024-02-26 20:17:28 490

原创 Spring Data的Repositories----存储库查询关键字

下表列出了Spring Data存储库查询派生机制通常支持的主题(subject)关键字,以表达谓词(predicate)。有关支持的关键字的确切列表,请参阅特定存储的文档,因为此处列出的某些关键字在特定存储中可能不受支持。下表列出了Spring Data存储库查询派生机制通常支持的谓词关键字。但是,有关支持的关键字的确切列表,请参阅特定存储的文档,因为此处列出的某些关键字在特定存储中可能不受支持。表3:查询谓词修饰词关键字。表1:查询主题关键字。表2:查询谓词关键字。

2024-02-26 20:11:37 555

原创 Spring Data的Repositories----从聚合根(Aggregate Roots)发布事件

由存储库管理的实体是聚合根。在域驱动设计应用程序中,这些聚合根通常发布域事件。请注意,这些方法将聚合根实例作为参数。这就是为什么deleteById(…)明显不存在的原因,因为实现可能会选择发出删除实例的查询,导致我们一开始就永远无法访问聚合实例。

2024-02-26 19:40:32 364

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除