摘要:
1 前言 我们看过Spring对AOP配置的解析以及通知器的筛选,也看过了动态代理的实现,这节那我们就看下Spring创建代理的过程,为下节看代理具体的执行过程做铺垫哈。 那我们从哪看起呢?还记得创建代理的那个切入时机么?也就是这里 那么让我们开始看createProxy。 2 源码分析 2.1 方 阅读全文
摘要:
1 前言 本节我们讲一下动态代理的实现过程,并且从源码分析下产生过程。看之前先简单看几个基础知识: 函数接口BiFunction<T, U, R> : R apply(T t, U u); 就是参数是T、U返回一个结果R 比如: (s1, s2) -> s1.toString() + s2.toSt 阅读全文
摘要:
1 什么是代理 代理是指给某一个对象提供一个代理对象,代理对象持有原对象的引用。一句话通过代理对象增强原对象的功能,比如在原对象调用一个方法的前后进行日志、事务操作等。Spring AOP就使用了代理模式。 2 代理的分类 代理又分为静态代理和动态代理,所谓静动站在我们自己来说就是静态需要我们自己去 阅读全文
摘要:
1 前言 我们了解过AOP配置解析以及AOP的切入时机,那么这篇我们看看,AOP是如何给某个Bean筛选合适的通知器。 2 源码分析 2.1 方法通读 我们从AOP切入时机中,为当前bean筛选通知器开始继续看起: protected Object[] getAdvicesAndAdvisorsFo 阅读全文
摘要:
1 前言 我们分析了AOP不管是XML配置还是注解方式的解析过程,这篇我们简单来说下AOP在Spring中对bean对象生命周期的一个入场时机,其实我们在讲解IOC的时候,已经点了一下这篇我们再来简单说一下。 2 源码分析 切入时机准确的说有两个地方: createBean里的resolveBefo 阅读全文
摘要:
1 前言 上一篇我们讲解了XML方式解析AOP的配置,这篇我们来解析下注解方式的解析过程。 2 代码准备 @Component @Aspect public class MyAspect { @Pointcut("execution( * com.virtuous.demo.spring.cycle 阅读全文
摘要:
1 前言 IOC的一些东西我们说过了,这篇我们开始看看AOP,面向切面编程,他也是Spring的一个核心功能,他的作用就是给我们的Bean创建代理对象,进行功能增强,比如我们的事务、日志等,我们主要讲讲他AOP的切入时机,也就是什么时候进场的,以及是怎么解析我们的注解或者在XML里配置的AOP功能, 阅读全文
摘要:
1 前言 这篇我们看一下,我们的AOP代码是怎么被Spring加载的进去的,那么分两种一种是XML配置的,一种就是我们常用的注解,我们从源码先看下XML方式的都是怎么被加载解析的。 2 代码准备 <context:component-scan base-package="com.virtuous.d 阅读全文
摘要:
1 前言 @PostConstruct、@PreDestory这两个注解大家应该有用过吧,我们这篇分析一下主要是PostConstruct这个注解的解析时机和执行时机。 2 源码分析 2.1 解析时机-doCreateBean的applyMergedBeanDefinitionPostProcess 阅读全文
摘要:
1 前言 我们的bean经过的应该就剩下initializeBean这个方法,这个方法对上一步的populateBean属性填充完,做最后的剩余工作,这个里边的东西相比之前几个那可真是让人看着开心加愉快了,我们来看。 2 源码分析 2.1 方法通读 看一下 initializeBean 方法的源码: 阅读全文