spring源码解析
有关于Spring各个技术模块的使用及源码分析
恐龙弟旺仔
保持热爱,保持进步
展开
-
spring-kafka源码解析
前言: 关于Kafka,是一个比较流行的MQ工具,也是多数公司比较常用的。有关于Kafka的一些基本内容读者可以参考官方文档,了解一下生产者消费者的使用。kafka的搭建笔者也不再详述,网络上有很多文章介绍。 这篇文章主要是从源码的角度来分析一下Spring对kafka的使用封装 笔者搭建的kafka版本为 kafka_2.11-0.11.0.11....原创 2018-12-10 14:19:30 · 7930 阅读 · 2 评论 -
SpringTransaction源码解析(上)
前言: 在之前的博客中 https://blog.csdn.net/qq_26323323/article/details/81908955 我们介绍了Spring事务的使用及其传播机制的使用。 本文就要从源码的角度来分析下Spring事务的实现方式 1.SpringTransaction的使用 请参考笔者另一篇博客 https://blog.c...原创 2018-08-22 18:06:07 · 3222 阅读 · 0 评论 -
SpringTransaction源码解析(下)
前言: 通过上一篇博客 https://blog.csdn.net/qq_26323323/article/details/81948682 的分析, 我们从大的结构上分析了Spring事务的实现方式。 主要从通过Spring代理生成代理类,然后通过执行TransactionInterceptor.invoke()方法,来完成Spring事务控制。 本文主要来分析Tr...原创 2018-08-24 14:02:18 · 2252 阅读 · 2 评论 -
SpringCache源码深度解析
前言: 缓存是我们常用的一种优化系统的方案。 无论是前端缓存还是应用层缓存或者数据库缓存,其本质都是将查询过的数据缓存下来,下次再次查询该数据的时候如果数据没有过期,则直接返回缓存中该数据即可,不再执行查询操作。 SpringCache是我们常用的一种应用层缓存方案,其一般应用在方法上,下面我们先来看下具体的使用方式,然后再从源码角度分析其实现方案 读者需要...原创 2018-08-15 11:17:45 · 11073 阅读 · 4 评论 -
SpringMVC源码解析(下)
前言: 我们接着上一篇文章 SpringMVC源码解析(上) 来继续分析,下面来看DispatcherServlet的源码详细解析 init()方法用来初始化资源; doGet()/doPost()等方法用来接收并处理请求; 下面就按照这两块来分析DispatcherServlet源码 1.DispatcherServlet.init(默认实现在Ht...原创 2018-07-19 10:50:49 · 1147 阅读 · 1 评论 -
SpringMVC源码解析(上)
前言: 做过web开发的小伙伴都应该使用过SpringMVC(或者Struts1/Struts2)等框架来处理前端请求,并响应对应的页面; 也有些特别老的项目,直接使用Servlet来处理web请求。 当然,无论使用哪种技术来处理Web请求,底层都是Servlet Servlet应用发布在Web容器(如Tomcat)中,Web容器对请求参数进行封装,对...原创 2018-07-18 14:21:55 · 2751 阅读 · 1 评论 -
Spring源码深度解析(AOP功能源码解析)
前言: 有关于Spring,我们最常用的两个功能就是IOC和AOP,前几篇文章从源码级别介绍了Spring容器如何为我们生成bean及bean之间的依赖关系 下面我们接着来看AOP的源码实现。 有关于AOP,我们在面试中也被无数次问到,AOP是什么?AOP有什么作用与优势?AOP在项目中是如何用到的? 这些还都是比较简单的,有些可能会问你AOP的实现是...原创 2018-07-12 11:28:14 · 32063 阅读 · 19 评论 -
Spring源码深度解析(XmlBeanFactory源码解析上)
前言: Spring容器有多种实现方式,一般来说可分为:BeanFactory和ApplicationContext * BeanFactory提供了容器的基本功能,如getBean()等功能 * ApplicationContext接口继承了BeanFactory,不但实现了BeanFactory的所有功能,还对其进行了扩展。 扩展功能如下:1)Messa...原创 2018-07-09 13:55:10 · 2064 阅读 · 6 评论 -
Spring源码深度解析(XmlBeanFactory源码解析下)
前言: 上文Spring源码深度解析(XmlBeanFactory源码解析上)介绍了XMLBeanFactory加载beans.xml的全过程 简单总结一下就是: 读取beans.xml为输入流; DOM解析xml文件为Document; Spring解析Document的Element为BeanDefinitionHold...原创 2018-07-10 13:48:41 · 532 阅读 · 0 评论 -
CommandLineRunner与ApplicationRunner的使用及源码解析
前言: 我们在使用SpringBoot搭建项目的时候,如果希望在项目启动完成之前,能够初始化一些操作,针对这种需求,可以考虑实现如下两个接口(任一个都可以)org.springframework.boot.CommandLineRunnerorg.springframework.boot.ApplicationRunner1.CommandLineRunner接口的使用...原创 2018-06-29 15:05:02 · 9171 阅读 · 0 评论 -
ApplicationListener与ApplicationEvent 使用及源码解析(下)
通过上篇文章ApplicationListener与ApplicationEvent 使用及源码解析(上)可知,监听器列表是从defaultRetriever中的applicationListeners中获取的,那么applicationListeners是什么时候被添加进来的呢本文就回答下该问题:实际就是从创建AnnotationConfigApplicationContext的时候被添加进...原创 2018-06-28 16:48:58 · 1353 阅读 · 1 评论 -
ApplicationListener与ApplicationEvent 使用及源码解析(上)
Spring提供ApplicationListener用来监听其他bean的事件,使用ApplicationContext容器对事件进行发布后,所有监听该事件的监听器,都将对该事件进行处理类似于java的监听器模式,只是在实现上略有不同,基本的思想是一致的。 1.基于java.util.Observable实现的监听器 * 被监听者Watched实现如下:// 被监听对...原创 2018-06-28 16:11:27 · 2922 阅读 · 2 评论 -
JdbcTemplate源码解析
1.原始实现 在jdbcTemplate之前,我们都是使用原始的方式来实现jdbc的相关操作,下面先看下原始的操作步骤String url = "jdbc:mysql://localhost:3306/test"; String username = "root"; String password = "root"; String sql = "update blog ...原创 2018-06-26 14:12:25 · 905 阅读 · 1 评论 -
RedisTemplate源码解析
1.原始redis操作实现 public void test(){ // 1.封装config JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxIdle(20); poolConfig.setMaxTotal(200); poolConfig.setMaxWaitMillis(200...原创 2018-06-26 14:20:15 · 4212 阅读 · 0 评论