随笔分类 -  2_Spring源码研究

摘要:前言: 在这之前我们已经建立请求和Controller方法的映射集合,接下来我们就要去取出映射关系里获取请求的逻辑实例。 根据请求查找对应的Controller方法的流程主要发生在DispatcherServlet类的doDispatch()方法。该方法的调用时机是当我们访问路径:http://lo 阅读全文
posted @ 2021-03-08 07:43 _kerry 阅读(1010) 评论(0) 推荐(0) 编辑
摘要:前言: 在使用SpringMVC的时候有没有想过,为什么在controller类的方法上,添加一个@RequestMapping("/toIndex")注解的时候,从浏览器的输入localhost:8080/toIndex请求就可以到达指定的controller方法呢? 接下来我们就开始讲Reque 阅读全文
posted @ 2021-03-07 22:22 _kerry 阅读(645) 评论(0) 推荐(0) 编辑
摘要:SpringMVC大致脉络图: RequestProcessorChain: 参照的是之前学习Spring的时候经常遇到的责任链模式的后置处理器。该类中保存了RequestProcessor的多个实现类,之所以会有多个不同的实现类是因为DispatcherServlet是项目中所有请求的唯一入口,这 阅读全文
posted @ 2021-03-04 22:24 _kerry 阅读(95) 评论(0) 推荐(0) 编辑
摘要:AdvisorAdapter关系图: MethodBeforeAdviceAdapter:该类提供getInterceptor()方法,将传递过来的advisor给调用getAdvice()方法获取到对应的advice然后强转为MethodBeforeAdvice类型。最后将其包装成MethodBe 阅读全文
posted @ 2021-03-03 22:00 _kerry 阅读(86) 评论(0) 推荐(0) 编辑
摘要:前言: 由于动态代理对象的创建并不需要也不会去干预bean的实例化、属性赋值、初始化。而初始化结束才意味着bean被创建完成,因此Spring会等到bean初始化之后,也就是执行完.invokeInitMethods()方法。才会将相关的横切逻辑织入到bean里。Spring的横切逻辑主要放在了初始 阅读全文
posted @ 2021-03-03 16:44 _kerry 阅读(111) 评论(0) 推荐(0) 编辑
摘要:横切逻辑的加载与解析: 即Aspect和Advice的加载阶段,在后续创建动态代理的时候, 根据之前开发自研框架AOP的经验,需要拿着所有的Aspect去尝试与容器的业务Bean去做匹配,只有匹配的Aspect才会去创建对应的动态代理,SpringAOP也不例外。 而进行匹配前势必要把IOC容器所有 阅读全文
posted @ 2021-03-01 12:01 _kerry 阅读(281) 评论(0) 推荐(0) 编辑
摘要:AutoProxyCreator的关系图: 观察类图,我们可以看到AbstractAutoProxyCreate实现了Aware接口,BeanFactoryAware接口使之拥有容器的能力,BeanClassLoaderAware接口使之用于Bean类加载器的能力。 实现AopInfrastruct 阅读全文
posted @ 2021-03-01 07:48 _kerry 阅读(239) 评论(0) 推荐(0) 编辑
摘要:前言: 为什么在启动类加上@EnbleAspectJAutoProxy就能支持AOP @EnableAspectJAutoProxy 首先我们跟入到源码中,进入到@EnbleAspectJAutoProxy类中,我们可以发现它有两个成员属性 proxyTargetClass: 表明该类采用CGLIB 阅读全文
posted @ 2021-02-28 09:52 _kerry 阅读(2122) 评论(0) 推荐(0) 编辑
摘要:BeanPostProcessor: BeanPostProcessor:Bean后置处理器 BeanPostProcessor是Spring IOC容器给我们提供的一个扩展接口。接口声明如下: public interface BeanPostProcessor { //bean初始化方法调用前被 阅读全文
posted @ 2021-02-27 11:41 _kerry 阅读(113) 评论(0) 推荐(0) 编辑
摘要:前言 容器是OOP的高级工具: 以低耦合低侵入的方式打通从上到下的开发通道 按部就班填充代码逻辑实现业务功能,每层逻辑都可无缝替换 OOP将业务程序分解成各个层次的对象,通过对象联动完成业务 无法很好地处理分散在各业务里的通用系统需求 系统需求 码农才去关系的需求 添加日志信息:为每个方法添加统计时 阅读全文
posted @ 2021-02-24 21:47 _kerry 阅读(166) 评论(0) 推荐(0) 编辑
摘要:该方法在AbstractAutowireCapableBeanFactory类中的doCreateBean方法中有使用到 populateBean方法大致流程图: (1)对Bean进行判空逻辑 (2)在设置属性前去修改Bean状态,也可以控制是否继续给Bean设置属性值(如果Bean不是Spring 阅读全文
posted @ 2021-02-23 20:50 _kerry 阅读(1155) 评论(0) 推荐(0) 编辑
摘要:Spring中的单例循环依赖解决 我们声明了两个类(A、B),两个类中的成员变量相互引用:然后在Spring中就会产生循环依赖(A依赖B,B依赖A)。 1 @Component 2 public class GirlFriend { 3 @Autowired 4 private BoyFriend 阅读全文
posted @ 2021-02-23 11:05 _kerry 阅读(151) 评论(0) 推荐(0) 编辑
摘要:前言: createBean是创建Bean的主要方法 该方法位于:AbstractBeanFactory的doGetBean方法中的createBean调用、 createBean方法流程图: createBean源码解析: protected Object createBean(String be 阅读全文
posted @ 2021-02-21 16:01 _kerry 阅读(606) 评论(0) 推荐(0) 编辑
摘要:doGetBean方法: 该方法位于 -> AbstractApplicationContext.refresh() -> AbstractApplicationContext.finishBeanFactoryInitialization(ConfigurableListableBeanFacto 阅读全文
posted @ 2021-02-20 11:55 _kerry 阅读(595) 评论(0) 推荐(1) 编辑
摘要:本章节目录: Spring 的 依 赖 注 入 前言: Spring为了实现Bean的生命周期控制,同时也考虑到Spring或者用户在实例化Bean的每个过程阶段中可能对Bean的行为进行定制化改变。 因此Bean的设计是极其复杂的。(Spring在Bean实例的创建过程中做了很多精细化控制) 本章 阅读全文
posted @ 2021-02-19 23:08 _kerry 阅读(78) 评论(0) 推荐(0) 编辑
摘要:事 件 监 听 器 模 式 监听器将监听感兴趣的事件,一旦事件发生,便做出响应 其涉及到的三个组件: 事件源(Event Source) 事件监听器(Event Listener) 事件对象(Event Object) 代码演示: 创建Event(事件类) @Getter @Setter publi 阅读全文
posted @ 2021-02-18 15:43 _kerry 阅读(212) 评论(0) 推荐(0) 编辑
摘要:本章节目录: (一)后 置 处 理 器 PostProcessor (二)Aware 接 口 及 其 子 接 口 (三)事 件 监 听 器 模 式 (四)Refresh 方 法 源 码 详 解 (一)后 置 处 理 器 PostProcessor PostProcessor: 本身也是一种需要注册到 阅读全文
posted @ 2021-02-18 10:12 _kerry 阅读(134) 评论(0) 推荐(0) 编辑
摘要:前言: 在这之前Spring已经通过document对象解析出BeanDefinition实例 以下就是将BeanDefinition注册进容器的步骤 在DefaultBeanDefinitionDocumentReader 类中的 processBeanDefinition()方法完成了对Bean 阅读全文
posted @ 2021-02-17 19:36 _kerry 阅读(278) 评论(0) 推荐(0) 编辑
摘要:模板方法模式 围绕抽象类,实现通用逻辑,定义模板结构,部分逻辑由子类实现: 1.复用代码 2.反向控制 阅读全文
posted @ 2021-02-16 19:30 _kerry 阅读(51) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示