Spring Integration
Spring Integration简介Spring Integration就类似一个水电系统,各层楼的控制,分流,聚合,过滤,沉淀,消毒,排污这里的每一个环节都类似一个系统服务,可能是jms,可能是redis,可能是MongoDB,可能是Tcp/UDP,可能是jo,可能是我们系统服务的任何一个模块。那么Spring Integration扮演的角色就是将这些功能能够连接起来组成一个完整的服务系统,实现企业系统的集成的解决方案。就像管道一样将各个模块连接到一起,管道能够连接到千家万户需要很多零件水表,分头管,水龙头,管道开关等等这些就是Spring Integration的主要组件
功能介绍Spring Integration主要包括:
Message:消息
Channel:消息传输的通道
Channel Adapter 消息入口和出口的,连接到某些外部系统或传输方式详细功能
通道(Channel):消息传输的通道,消息传入通道,然后再从通道里面拿取消息。Spring Integration提供了多种通道的实现,默认使用的是DirectChannel。
PublishSubsc ...
Reactor初探
Reactor
在传统的编码中,会将逻辑处理代码写成方法,需要的数据由方法参数传入,处理过的数据由方法的返回值返回。
执行时以main方法为入口点启动,按照一定的顺序执行这些方法,数据依次流入流出每个方法,当所有的方法执行完时,数据也处理完了,就结束了。
整个过程是以逻辑代码的执行为主线,数据只是一个必须的参与者而已,因为代码要处理数据,如果数据不到位,代码就停下来不执行,等待数据的到来。
这就是典型的同步阻塞式的执行过程,非常简单,易于理解,而且代码也很好写。
到目前为止,我们提到的都是响应式的理论,那应该怎样去实现它呢,一时间还真没有头绪。
响应式是异步非阻塞,和同步阻塞应该是相对的。那我们不妨就拿响应式往同步阻塞上套一下,看看能得到什么有价值的发现。
响应式关注两点,变化和反应,而且是变化在前,反应在后。同步阻塞也关注两点,执行逻辑和数据,而且是执行逻辑在前,数据在后。
那就开始建立对应关系。因为“反应”是一系列行为动作,所以应该和“执行逻辑”对应。那“变化”只能和“数据”对应,其实这是对的,“数据”由不可用到可用,本身就是发生了一个“变化”。
这个对应关系建立的很完美,但是逻辑 ...
反应式编程初探
同步阻塞
“你知道什么是同步阻塞吗”,当然知道了。“那你怎么看它呢”,这个。。。
在同步阻塞的世界里,代码执行到哪里,数据就跟到哪里。如果数据很慢跟不上来,代码就停在那里等待数据的到来,然后再带着数据一起往下执行。
可以说是,代码执行和数据是结伴而行,不离不弃。执子之手与子偕老。让人老感动了。
如果还不太理解的话,可以认为代码执行其实就是一些行为动作,这些行为动作的目的就是为了获取/操作数据。
例如加法,这里的行为动作就是执行相加,数据就是加数和被加数。操作结果就是得到了另一个数据,即两个数的和。
只是在这个加法里,数据跑的特别快,(CPU的寄存器,能不快吗),我们几乎觉察不到执行动作在等数据的过程。怎么办呢,那就看一个能把它们拉开的例子。
那自然非数据库查询莫属了,既有网络I/O,又有磁盘I/O,肯定会慢一些。
假设我的业务是这样的,代码先去数据库查询一个用户,接着修改用户的密码,然后再更新回数据库,最后代码返回成功。
如果网速和数据库都很慢的话,可能是这样的。代码执行一个查询数据库动作,然后等啊等啊等,等的花都谢了,终于数据库把用户返回过来了,接着,代码飞快的修改了密码,并执行一个 ...
SpringBoot源码系列(一)
Spring项目架构预览
推荐使用idea进行代码阅读
核心预定大于配置,这是SpringBoot的一个原则。它的核心就是配置自动加载。核心部分:
注解: @EnableAutoConfiguration
配置注册内容: spring.factories
自动配置类: xxxAutoConfiguration
前置条件注解: @Conditional
Starters: 三方组件
自动装配@EnableAutoConfiguration注解12345678910111213/** * 启动应用上下文自动配置,并配置你需要的bean。 */@AutoConfigurationPackage@Import(AutoConfigurationImportSelector.class)public @interface EnableAutoConfiguration { // 是否启动自动配置环境变量 String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration"; // ...

