Spring源码分析
Spring源码解读,分析
haoxin963
身为一名资深Java程序员,我已经把人工智能融入我的代码中,梦想用Java创造出能和我一起喝咖啡的智能机器人!
展开
-
白话Spring源码(十四):Spring Context源码分析-事件机制
这篇博客主要给大家介绍ApplicationContext的另外一个核心功能:事件机制。为什么要使用事件机制?使用事件机制可以解耦代码,观察者与被观察者可以分开开发,中间只有事件作为联系,不用关心另一方如何实现。观察者可以有多个,所以对于同一个事件可以有多种不同的处理方式,不过要确保不依赖处理的顺序。使用事件后,观察者可以单独开发,对主流程没有任何影响,可以简化主流程的开发。事件可以用...原创 2019-04-22 22:30:19 · 315 阅读 · 0 评论 -
白话Spring源码(十三):Spring Context源码分析
前几篇博客给大家介绍了Spring框架的IOC和AOP的源码,那怎么把这两个核心组件连接起来对外提供更好用的接口呢?这时context包里的ApplicationContext就登场了。简单使用我们先看个ApplicationContext使用的demo:ClassPathXmlApplicationContext context=new ClassPathXmlApplicatio...原创 2019-04-22 21:15:39 · 796 阅读 · 0 评论 -
白话Spring源码(十二):Spring AOP源码分析-拦截器链的执行过程
上篇博客我们介绍了创建代理对象:白话Spring源码(十一):Spring AOP源码分析-创建代理对象。现在我们的得到了 bean 的代理对象,且通知也以合适的方式插在了目标方法的前后。接下来要做的事情,就是执行通知逻辑了。通知可能在目标方法前执行,也可能在目标方法后执行。具体的执行时机,取决于用户的配置。当目标方法被多个通知匹配到时,Spring 通过引入拦截器链来保证每个通知的正常执行。在本...原创 2019-04-14 18:20:55 · 528 阅读 · 0 评论 -
白话Spring源码(十一):Spring AOP源码分析-创建代理对象
上篇博客:白话Spring源码(十):Spring AOP源码分析-筛选合适的通知器分析了 Spring 是如何为目标 bean 筛选合适的通知器的。现在通知器选好了,接下来就要通过代理的方式将通知器(Advisor)所持有的通知(Advice)织入到 bean 的某些方法前后。织入到 bean的原理是动态代理。那我们先了解一下动态代理:动态代理动态代理有两种实现方法:jdk动态代理,...原创 2019-04-14 13:36:18 · 440 阅读 · 0 评论 -
白话Spring源码(十):Spring AOP源码分析-筛选合适的通知器
上一篇博客介绍了AOP的相关概念:白话Spring源码(九):Spring AOP原理和相关概念。其实AOP的原理比较简单,但是里面的概念和抽象比较多,入口也藏得比较深。好了,我带大家从入口开始进去源码吧!要找到入口我们就必须搞清楚Spring AOP 是在何处向目标 bean 中织入通知(Advice)的。也说过 Spring 是如何将 AOP 和 IOC 模块整合到一起的,即通过拓展点 ...原创 2019-04-07 21:26:46 · 748 阅读 · 1 评论 -
白话Spring源码(九):Spring AOP原理和相关概念
距上次写完spring bean相关源码的博客已经过了很长时间了,主要是最近自己工作比较忙,但这不是借口还是要继续坚持写下去。好了,下面进入主题。bean相关的已经介绍完了,下面的一大块就是AOP相关的,我们知道AOP是Spring框架的第二个核心。在分析源码以前还是先介绍一下它的原理和里面的一些抽象概念(源码越读越觉得老外的抽象能力就是厉害)。AOP全程是Aspect Oriented P...原创 2019-03-27 13:01:04 · 365 阅读 · 0 评论 -
白话Spring源码(八):Aware接口
我们知道spring框架中所有bean都是在工厂里创建的,bean对自己是“无知觉”的,不知道自己叫什么名字(bean的id或者name),从哪里来(哪个工厂创建)。一、为什么需要Aware大家看过黑客帝国电影吧,黑客帝国中机械工厂里面“养殖”的人类,他们虽然能完成一定的功能,但是根本不知道自己在工厂(BeanFactory)中的代号(id),或者自己是在哪个工厂(BeanFactory的...原创 2018-12-18 21:32:12 · 242 阅读 · 0 评论 -
白话Spring源码(七):FactoryBean
看清楚是FactoryBean,不是BeanFactory,虽然他们长得很像,但作用确实天差地别,BeanFactory是bean工厂,前面的博客已经介绍过了,他们工厂类的基础接口,而FactoryBean是一种bean,那为什么要有这种bean呢,和一般的bean有什么区别呢?下面跟大家分享一下FactoryBean。一、为什么需要FactoryBean我们知道spring里一切皆是be...原创 2018-12-18 20:18:06 · 552 阅读 · 0 评论 -
白话Spring源码(六):BeanDefinition的注册过程
上一篇博客讲了bean的创建过程。这次跟大家分享BeanDefinition的注册过程。一、什么是BeanDefinitionBeanDefinition:就是bean的定义信息,比如bean的名称,对应的class,bean的属性值,bean是否是单列等等,一般是通过xml来定义的,如下所示: <bean id="test" class="org.springframewor...原创 2018-12-17 22:57:25 · 346 阅读 · 0 评论 -
白话Spring源码(五):Bean的创建过程
我们知道可以通过name从beanFactory获取对应bean对象,那bean是怎么创建的呢?我们先设想如果我们来创建对象需要哪几步呢?1.找到对象的class2.通过反射创建对象3.设置对象的属性值其实spring创建对象的也是主要分这几步,下面我们进入源码看看吧!上篇博客我们了解了beanFactory的结构,但那都是接口并没有具体实现,beanFactory的get...原创 2018-12-09 16:07:17 · 931 阅读 · 2 评论 -
白话Spring源码(四):BeanFactory
一、什么是BeanFactory我们先学习Spring最核心的功能:IoC,控制反转又叫依赖注入,这概念是不是很难理解,这是出于商业的目的才起这么个高大上的概念,其实我们阅读源码后发现其实很简单:就是对象通过xml定义好,然后通过java的反射机制new出对象,最后放在一个map里,想用就就从map里get出来。我们很多时候是被概念吓住了。但是我们要开发出很稳定的,扩展性好的还是很不容易。...原创 2018-12-08 20:24:15 · 467 阅读 · 0 评论 -
白话Spring源码(三):spring框架的理解
一、为什么需要Spring我们想一下如果没有spring框架我们是怎么去开发web应用呢?我估计大部分代码是跟业务无关而跟底层或者网络接口交互;对象,模块关系错综复杂;开发周期特别的长很容易流产;后期维护时代码会越来越烂,最后可能无法维护。。。那spring框架给我们解决什么问题了呢?1.封装非业务的代码,我们只需开发业务功能:比如获取请求的数据,保存数据库,事务等等2.统一创...原创 2018-12-08 15:53:30 · 619 阅读 · 0 评论 -
白话Spring源码(二):spring源码分享的思路
做事先列个大纲,这样思路清晰了才不会乱。这次spring源码系列的博客每个字我都坚持自己手敲,然后文采不好,但是真实。希望大家喜欢。大纲:1.spring框架的理解2.beanfactory:怎么创建bean的,怎么加载xml中bean的定义的3.AOP4.applicationContext下面的等我想好了再补充 ...原创 2018-12-08 14:49:49 · 463 阅读 · 0 评论 -
白话Spring源码(一):怎么阅读源码
跟大家分享Spring源码前我想先聊聊:为什么要阅读源码?怎么阅读源码?希望大家在学习某个新的知识前多问几个为什么,好奇心是我们学习的一大动力。一、为什么要阅读源码刚入行时,我们会接触很多框架:spirng,Struts,Hibernate,mybatis等等,我们只要在这些框架上做业务功能的开发,了解一些配置,那时自己能从零搭一个框架都感觉很不错。但工作几年后,工作变得很枯燥...原创 2018-12-08 14:34:25 · 1350 阅读 · 0 评论