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理解相关推荐

  1. Ruby DSL介绍及其在测试数据构造中的使用(1)

    什么是DSL?英文全称Domain Specific Language,中文解释为领域专用语言.顾名思义,DSL是针对某个特定领域而开发的语言.像我们平时接触到的C/C++,Java,Python/R ...

  2. MDSF:DSL(Domain Specific Language)介绍

    前面介绍过模型 驱动开发(MDD) .软件 工厂(Software factory) .特定领 域建模 DSM(Domain Specific) 等都是高抽象的开发方法,这些方法使用的语言都是特定领域 ...

  3. DSL(Domain Specific Language)介绍

    前面介绍过模型驱动开发(MDD).软件工厂(Software factory).特定领域建模 DSM(Domain Specific)等都是高抽象的开发方法,这些方法使用的语言都是特定领域语言(DSL ...

  4. 快应用宣布支持第三方DSL

    1. 背景介绍 大家好,这里是快应用联盟的前端研发团队: 自去年3月,快应用联盟成立之后,已经有很多开发者使用快应用的标准DSL(以ux文件后缀的项目形式)上线了对应产品. 以"旅游出行&q ...

  5. 《Kotin 极简教程》第14章 使用 Kotlin DSL

    第14章 使用 Kotlin DSL 最新上架!!!< Kotlin极简教程> 陈光剑 (机械工业出版社) 可直接打开京东,淘宝,当当===> 搜索: Kotlin 极简教程 htt ...

  6. 微服务03 分布式搜索引擎 elasticsearch ELK kibana RestAPI 索引库 DSL查询 RestClient 黑马旅游

    分布式搜索引擎01 -- elasticsearch基础 0.学习目标 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是 ...

  7. DSL 领域特定语言

    一.DSL介绍 DSL(Domain Specific Language)是针对某一领域,具有受限表达性的一种计算机程序设计语言. 常用于聚焦指定的领域或问题,这就要求 DSL 具备强大的表现力,同时 ...

  8. 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 ...

  9. 领域专用语言(DSL)简介

    原文地址:http://blog.csdn.net/u010278882/article/details/50554299 主要回答几下几个问题  1 什么是 DSL  2 为什么使用 DSL  3 ...

最新文章

  1. 如何实现一个Java Class解析器
  2. linux生成一个list文件,Linux 获取文件名称生成列表 txt - create_filelist
  3. cpuid linux,Linux下获取CPUID、硬盘序列号与MAC地址(2)
  4. google java. 集合_google guava集合之Table
  5. ajax返回值demo
  6. vcglib中面自相交的检测算法
  7. python合并表格_python合并表格sheets
  8. 计算几何——点到直线的距离、投影点
  9. 条形码类别及如何区分
  10. 搭建博客mysql 结构_LANP环境构架搭建
  11. python学习笔记------列表
  12. 001简介-QQ群淘宝客软件开发详解
  13. 在校学生适合的云服务器有哪些?
  14. CodeForces - 735D Taxes (哥德巴赫猜想)
  15. github上关于iOS的各种开源项目集合 (转载)
  16. 教你快速开发一个 狼人杀微信小程序(附源码)
  17. SVN修改提交后的文件名
  18. 利用栈实现四则运算,带负数,带括号,带小数
  19. SAP 未计划交货费-MIRO发票校验
  20. 大数据治理:那些年,我们一起踩过的坑

热门文章

  1. 腾讯地图引用到react项目
  2. Mac无法播放音乐的问题
  3. 数据库基础(数据库的由来 + 第一、二、三范式)
  4. 2018年浙江棚改开工完成率国内第一 保障数达历年最高
  5. 高德地图搜索附近的实现
  6. itextsharp php,将页码添加到pdf文档(itextsharp)
  7. 【Easyexcel】使用easyexcel导出带有固定表头的excel代码,并且有合并单元格操作
  8. 【bzoj4715】囚人的旋律 dp
  9. [GDOI模拟2015.08.12]囚人的旋律
  10. java遍历手机号的代码_Java遍历的实现方法介绍(代码示例)