dsl java_Java DSL理解
Spring Integration中引入了Java DSL,希望可以让开发人员不再完全依赖xml进行配置,而是可以通过Java代码进行集成流程的配置,并且通过java 编译器尽早发现问题。
的确,通过xml进行配置,小项目还可以,大项目估计很容易把人给绕晕。但是Java DSL其实也有类似的问题。小项目写写还是很清楚的,项目一大,看DSL如同看天书。
接下来,我们结合两个例子来体验一下Java DSL的用法。
@Bean
public IntegrationFlow Flow1() {
return IntegrationFlows.from("resultChannel")
.log(LoggingHandler.Level.INFO, "full list of records", m -> m.getPayload())
.get();
}
@Bean
public IntegrationFlow Flow2() {
return f -> f
.handle(Jpa.retrievingGateway(this.entityManagerFactory)
.jpaQuery("from Person p where p.id =:id")
.expectSingleResult(true).parameterExpression("id", "payload")
)
.log(LoggingHandler.Level.INFO, "query with where condition", m -> m.getPayload());
}
上面2例中,Flow1和Flow2都是IntegrationFlow,但是返回值的写法不同。
Flow1采用的是标准写法,从定义输入Channel开始;
Flow2是衍生写法,看似没有定义输入Channel,其实它默认自己就是输入Channel,Channel的名称为Flow2.input。也就是在自己的方法名后,追加“.input”组合成Channel名称。这个在文档里是提到了的。在Flow2方法体中的f,其类型就是MessageChannel.
从原理上来说,DSL通过串接方式,将一条消息的完整处理路径给定义出来。所以dsl中主要是配置处理过程。处理过程之间会通过channel进行串接。串接用的channel不需要特别声明,dsl自动配置。
一些标准的操作,可以用transformer,splitter,一些非标的操作,也可以使用专用处理函数,这个称为handle.在xml里称为service activator.
si是否一定要用kafka adapter呢?其实也未必。完全可以将kafka通讯包装成handle,然后进行处理。
用kafka adapter,有一定的学习成本。如果后续调试的话,也不是很方便,是一个黑盒。学会了si,开发时能否快捷一些?这个需要对比spring kafka和spring integration kafka adapter的差异。
dsl java_Java DSL理解相关推荐
- Ruby DSL介绍及其在测试数据构造中的使用(1)
什么是DSL?英文全称Domain Specific Language,中文解释为领域专用语言.顾名思义,DSL是针对某个特定领域而开发的语言.像我们平时接触到的C/C++,Java,Python/R ...
- MDSF:DSL(Domain Specific Language)介绍
前面介绍过模型 驱动开发(MDD) .软件 工厂(Software factory) .特定领 域建模 DSM(Domain Specific) 等都是高抽象的开发方法,这些方法使用的语言都是特定领域 ...
- DSL(Domain Specific Language)介绍
前面介绍过模型驱动开发(MDD).软件工厂(Software factory).特定领域建模 DSM(Domain Specific)等都是高抽象的开发方法,这些方法使用的语言都是特定领域语言(DSL ...
- 快应用宣布支持第三方DSL
1. 背景介绍 大家好,这里是快应用联盟的前端研发团队: 自去年3月,快应用联盟成立之后,已经有很多开发者使用快应用的标准DSL(以ux文件后缀的项目形式)上线了对应产品. 以"旅游出行&q ...
- 《Kotin 极简教程》第14章 使用 Kotlin DSL
第14章 使用 Kotlin DSL 最新上架!!!< Kotlin极简教程> 陈光剑 (机械工业出版社) 可直接打开京东,淘宝,当当===> 搜索: Kotlin 极简教程 htt ...
- 微服务03 分布式搜索引擎 elasticsearch ELK kibana RestAPI 索引库 DSL查询 RestClient 黑马旅游
分布式搜索引擎01 -- elasticsearch基础 0.学习目标 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是 ...
- DSL 领域特定语言
一.DSL介绍 DSL(Domain Specific Language)是针对某一领域,具有受限表达性的一种计算机程序设计语言. 常用于聚焦指定的领域或问题,这就要求 DSL 具备强大的表现力,同时 ...
- Elasticsearch - DSL 查询语句
文章目录 1.DSL查询文档 1.1.DSL查询分类 1.2.全文检索查询 1.2.1.使用场景 1.2.2.基本语法 1.2.3.总结 1.3.精准查询 1.3.1.term查询 1.3.2.ran ...
- 领域专用语言(DSL)简介
原文地址:http://blog.csdn.net/u010278882/article/details/50554299 主要回答几下几个问题 1 什么是 DSL 2 为什么使用 DSL 3 ...
最新文章
- 如何实现一个Java Class解析器
- linux生成一个list文件,Linux 获取文件名称生成列表 txt - create_filelist
- cpuid linux,Linux下获取CPUID、硬盘序列号与MAC地址(2)
- google java. 集合_google guava集合之Table
- ajax返回值demo
- vcglib中面自相交的检测算法
- python合并表格_python合并表格sheets
- 计算几何——点到直线的距离、投影点
- 条形码类别及如何区分
- 搭建博客mysql 结构_LANP环境构架搭建
- python学习笔记------列表
- 001简介-QQ群淘宝客软件开发详解
- 在校学生适合的云服务器有哪些?
- CodeForces - 735D Taxes (哥德巴赫猜想)
- github上关于iOS的各种开源项目集合 (转载)
- 教你快速开发一个 狼人杀微信小程序(附源码)
- SVN修改提交后的文件名
- 利用栈实现四则运算,带负数,带括号,带小数
- SAP 未计划交货费-MIRO发票校验
- 大数据治理:那些年,我们一起踩过的坑
热门文章
- 腾讯地图引用到react项目
- Mac无法播放音乐的问题
- 数据库基础(数据库的由来 + 第一、二、三范式)
- 2018年浙江棚改开工完成率国内第一 保障数达历年最高
- 高德地图搜索附近的实现
- itextsharp php,将页码添加到pdf文档(itextsharp)
- 【Easyexcel】使用easyexcel导出带有固定表头的excel代码,并且有合并单元格操作
- 【bzoj4715】囚人的旋律 dp
- [GDOI模拟2015.08.12]囚人的旋律
- java遍历手机号的代码_Java遍历的实现方法介绍(代码示例)