主页

[断点分析之spring-ioc]-bean标签解析(五)

一、前言 ​ 分析了import标签、alias标签,顺势引出了bean标签,只不过bean标签逻辑较为复杂没有记录完. 二、从BeanDefinitionParserDelegate开始 // BeanDefinitionParserDelegate @Nullable public BeanDefinitionHolder parseBeanDefinitionElement(Element ele) { return parseBeanDefinitionElement(ele, null); } /** * Parses the supplied {@code <bean>} element. May return {@code null} ...

阅读更多

[断点分析之spring-ioc]-xml标签解析(四)

一、前言 ​ 接上文,分析了spring 把 xml 文件读取到内存中,并生成一个document对象,然而离创建bean还比较遥远.在xml中定了bean该如何创建的规则,而spring也是遵循xml中的标签所描述规则来进行创建bean.接下来就是要分析,spring是如何解析这些标签的. 二、分析 ​ 还是常规套路,从下面的测试代码开始. @Test public void testSpringLoadXml(){ BeanFactory factory = new XmlBeanFactory(new ClassPathResource("com/sjr/test/bean/MyTestBean.xml")); final MyTestBean testBean...

阅读更多

[断点分析之spring-ioc]-xml文件解析(三)

一、前言 ​ 前面资源文件加载搞定了,来看看 spring 是如何把 xml 文件变成 bean 的吧. 二、分析 ​ 还是从4句代码看起. @Test public void testSpringLoadXml(){ // 加载xml BeanFactory factory = new XmlBeanFactory(new ClassPathResource("com/sjr/test/bean/MyTestBean.xml")); // 获取bean final MyTestBean testBean = factory.getBean("myTestBean",MyTestBean.class); final String testStr =...

阅读更多

[断点分析之spring-ioc]-资源加载ResourceLoader(二)

一、前言 ​ 资源统一抽象为Resource对象.可曾记得在 spring 配置文件中的这种写法:classpath:com/sjr/test/bean/MyTestBean.xml,那么这种写法的意思是从classpath路径下加载xml,那么spring是如何定位到文件的? ​ 上面这种写法相当于是个协议,在spring中默认支持9种文件协议. URL_PROTOCOL_FILE 从文件系统中加载文件 URL_PROTOCOL_JAR 从jar包中加载文件 URL_PROTOCOL_WAR 从war包中加载文件 URL_PROTOCOL_ZIP 从zip中加载文...

阅读更多

[断点分析之spring-ioc]-资源对象Resource(一)

一、前言 ​ 在这个春回大地万物复苏的日子,在家里带着口罩,手持消毒液.分析spring是最好消磨时间的方式.不知道在这段时间里面,能否把IOC这个分析完. ​ Resource 这个接口抽象了资源的获取方式, spring 启动往往都是从这一步开始. 二、从那几句代码开始 简单的java bean package com.sjr.test.bean; public class MyTestBean { private String testStr = "test--one"; public String getTestStr() { return testStr; } public MyTestBean setTestStr(String tes...

阅读更多

java调用c# webservice

一、前言 ​ 最近落在手上一个对接任务,对方平台采用的是webservice,用.net写的.刚开始看文档的时候,感觉挺简单的,就几个xml发过去发过来的(之前没搞过webservice,全是个人愚见.). ​ 但后面出现一个问题,接口上注明的参数类型是binarybase64,按照文档示例,不管怎么序列化都不对,一直在提示参数不对,不能序列化.后面才发现,这个二进制序列化格式是用的c#独有的序列化方式,是不跨平台的.emmm 二、BinaryFormatter ​ 在c#里面常用的序列化方式是BinaryFormatter,这种序列化方式,是二进制形式,跟protocbuf差不多,但性能上要比protocbuf要好点.对比json就更不用说了.但为了提升性能,必将在其他地方作...

阅读更多

java调用c# webservice

一、前言 ​ 最近落在手上一个对接任务,对方平台采用的是webservice,用.net写的.刚开始看文档的时候,感觉挺简单的,就几个xml发过去发过来的(之前没搞过webservice,全是个人愚见.). ​ 但后面出现一个问题,接口上注明的参数类型是binarybase64,按照文档示例,不管怎么序列化都不对,一直在提示参数不对,不能序列化.后面才发现,这个二进制序列化格式是用的c#独有的序列化方式,是不跨平台的.emmm 二、BinaryFormatter ​ 在c#里面常用的序列化方式是BinaryFormatter,这种序列化方式,是二进制形式,跟protocbuf差不多,但性能上要比protocbuf要好点.对比json就更不用说了.但为了提升性能,必将在其他地方作...

阅读更多

Postgresql-CDC 方案踩坑

一、CDC概念 ​ CDC(Changing Data Capture)意思是捕捉变化的数据,用流的方式持续捕捉.这与ETC有着本质上的区别,ETL则是定时拉取数据. ​ ETL 概念上是:抽取(E)、转换(T)、导入(L),ETL现在是比较成熟的,方案也比较多.但定时抽取就会意味着有时效性的问题,如果有一种方案,数据库数据出现更改就自动同步到OLAP引擎里面,岂不是美滋滋?那么CDC就是为此而生的,持续不断的监听数据库的变化情况,一旦变化就立马发出消息进行同步消息,但这种方案也并非完美,如遇到大事务的SQL,批量更新的这种,也会有延迟的问题,权衡一下估计两者差不多. ​ 市面上常用的数据库有Mysql,PostgreSql等,Mysql的CDC方案比较多,通过监听binlog实...

阅读更多