
Spring框架源码解读
Spring框架源码解读
二米粥「已掉线」
愿你走出半生,归来仍是少年
展开
-
第25讲:总结
Spring处理事务核心的几个类的总结:TransactionDefinition:事务的定义,里面包含Transactionatribute(事务定义的属性)TransactionInfo:它是一个内部类,里面保存了TransactionStatus和另外一个TransactionInfo,另外的一个TransactionInfo代表了嵌套事务的时候的外出事务,供之后恢复使用TransactionStatus:描述当前事务运行期的一些状态,可以获取到事务运行时的一些信息PlatformTr原创 2021-03-16 14:42:44 · 158 阅读 · 0 评论 -
第25讲:经典模板方法设计模式在spring中的应用
代码块1:getTransaction注意:这里用到了模板方法设计模式AbstractPlatformTransactionManager.class /** * This implementation handles propagation behavior. Delegates to * {@code doGetTransaction}, {@code isExistingTransaction} * and {@code doBegin}. * @see #doGetT原创 2021-03-16 14:41:08 · 448 阅读 · 0 评论 -
第23讲:Spring事务底层实现
代码块1:invoke TransactionInterceptor.class @Override @Nullable public Object invoke(MethodInvocation invocation) throws Throwable { // Work out the target class: may be {@code null}. // The TransactionAttributeSource should be passed the targe原创 2021-03-16 14:13:46 · 343 阅读 · 0 评论 -
第22讲:Spring事务管理代码详解
代码块1:afterPropertiesSet()小结:通过下面代码可以看出spring的afterPropertiesSet()方法很实用,它就像spring给bean实例化时创建的一个监听,当bean对象实例化好,对属性都赋值完成后就会执行这个方法。我们可以根据自己的需要在这个回调方法中执行很多自己需要的代码。试想,如果没有这个回调函数,那很多bean实例化完成后写在哪里呢?写在实例化完成后的后面?这样不是这个bean的实例化就和后面的代码有耦合了?看起来bean的实例化就根本不是一气呵成的了。所以原创 2021-03-16 11:55:03 · 268 阅读 · 0 评论 -
第21讲:Spring数据访问源码解剖
代码块1:TransactionProxyFactoryBean:/** * Proxy factory bean for simplified declarative transaction handling. * This is a convenient alternative to a standard AOP * {@link org.springframework.aop.framework.ProxyFactoryBean} * with a separate {@link Tra原创 2021-03-16 11:30:21 · 229 阅读 · 0 评论 -
第19讲-第20讲:SpringIoc与Aop总结与回顾
bean工厂的创建(向ioc容器中注册好beanDefinition(Bean的定义信息))bean实例的创建、aop的解析原创 2021-03-15 16:27:42 · 126 阅读 · 0 评论 -
第18讲:拦截器链的获得与递归执行
代码块1:this.advised.getInterceptorsAndDynamicInterceptionAdvice(method, targetClass);AdvisedSupport.class/** * Determine a list of {@link org.aopalliance.intercept.MethodInterceptor} objects * for the given method, based on this configuration. * @p原创 2021-03-15 16:24:03 · 327 阅读 · 0 评论 -
第17讲:AOP 执行流程与机制详解
代码块1:invoke()JdkDynamicAopProxy.class/** * Implementation of {@code InvocationHandler.invoke}. * <p>Callers will see exactly the exception thrown by the target, * unless a hook method throws an exception. */ //调用者可以看到被代理方法本身抛出的异常,但是代理原创 2021-03-15 15:48:02 · 244 阅读 · 0 评论 -
第16讲:JdkDynamicAopProxy与CglibAopProxy详解
要点:cglib和jdk动态代理它们都是通过运行时,动态创建出来的代理对象的class,然后创建出代理对象。不同点在于:jdk创建出的代理对象是和被代理对象平级的,因为它们都是同一个接口的实现类;cglib创建出来的代理对象是被代理对象的子类(父子关系)代理方法的不同实现原理:jdk动态代理方法的原理是通过invock方法实现的。代理对象执行任何方法时,都会被 invock方法所拦截,然后都去执行invoke方法;cglib是通过监听执行回调,来达到动态代理方法的代码块1:createAopPr原创 2021-03-15 15:40:33 · 831 阅读 · 0 评论 -
第15讲:ProxyFactoryBean与Aoproxy详解
FactoryBean类的核心是通过getObject()方法来创建对象的,所以我们直接研究这个方法(源码分析来自于Spring5.1.5):ProxyFactoryBean.class主代码块:/** * Return a proxy. Invoked when clients obtain beans from this factory bean. * Create an instance of the AOP proxy to be returned by this f.原创 2021-03-15 15:18:00 · 354 阅读 · 0 评论 -
第14讲:ProxyFactoryBean介绍
ProxyFactoryBean是创建AOP代理对象的FactoryBean。相信看了前面的ioc,你应该对FactoryBean和BeanFactory有所了解和对比。总的来说:ProxyFactoryBean的作用就是创建目标对象的代理对象。将对目标对象方法的调用转到对应的代理对象的方法,而且代理对象方法调用前后会执行与之匹配的各个通知器中定义好的方法ProxyFactoryBean的属性:target:需要被切面增强的对象proxyInterfaces:代理对象所需要实现的接.原创 2021-03-15 14:41:36 · 1199 阅读 · 0 评论 -
第12讲-第13讲:Spring AOP中的几个概念
Pointcut(切点):要切割连接的地方Advice(通知):定义了连接点出要做的行为Advisor(通知器):组合Advice和Pointcut原创 2021-03-15 14:26:44 · 129 阅读 · 0 评论 -
第11讲:ApplicationContext
applicatonContext是一个父类 ,应用程序提供配置的中央接口,它为什么能提供很多功能的接口呢?因为它实现了很多接口,如:ListableBeanFactory、ApplicationEventPublisher、ResourcePatternResolver等。它有一个子类:WebApplicationContext。它是我们做web开发时用到的一applicationContext,它里面有一个方法getServletContext()。在web程序启动过程中会绑定上根上下文。与通用应用程序原创 2021-03-15 10:19:27 · 329 阅读 · 0 评论 -
第10讲:Spring Ioc的缓存
没什么要说的,就是直接从缓存中取bean就完了,第9讲的代码块1中有讲原创 2021-03-14 15:49:09 · 150 阅读 · 0 评论 -
第9讲:Spring Bean的创建与获取
好了,通过前面几章的讲解,我们才把BeanDefinition的定义给讲解完,下面接着讲解如何通过这些创建好的BeanDefinition来创建bean的实例(另外这章内容会比较多,看之前请做好心理准备@_@)1、Spring的Bean实际上是缓存在CurrenthashMap对象中2、创建Bean之前,首先需要将该bean的创建标识设定好,表示该bean已经或即将被创建,为的是增强缓存的效果3、通过bean的scope属性来确定是singleton还是prototype等范围,然后创建相.原创 2021-03-14 15:45:50 · 675 阅读 · 3 评论 -
第8讲:spring配置文件的读取与容器装配详解
第6讲中的代码块1中的parseBeanDefinitions(root, this.delegate)方法解析:protected void parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate) { if (delegate.isDefaultNamespace(root)) { NodeList nl = root.getChildNodes(); for (int i =原创 2021-03-13 15:40:56 · 163 阅读 · 0 评论 -
第7讲:BeanDefinitionParserDelegate深入解读
什么都没做,就是通过debuge查看了ioc容器的启动过程注意:每次new对象的时候都会先执行类加载器加载类原创 2021-03-13 11:33:08 · 198 阅读 · 0 评论 -
第6讲:BeanDefinitionParserDelegate与资源解析
第五讲的代码块4:registerBeanDefinitions(doc, resource)的内部代码块2的最后已经提到了BeanDefinitionParserDelegate才是真正用于解析BeanDefinition的,下面我们来详解下这个类1、简述这个类的作用:这个类是真正解析BeanDefiniton的类(它是一个被委托的类):属性:它里面的属性定义了要解析的xml文件中出现的所有名字,如:元素名、属性名等。如:String NAME_ATTRIBUTE = "name";Str原创 2021-02-18 17:39:06 · 340 阅读 · 0 评论 -
第5讲:XmlBeanDefinitionReader与Resource
1、观察defaultlistablebeanfactory的属性2、分析ClasspathResource的创建3、分析DefaultListableBeanFactory的创建1、classPathResource的构造方法2、分析DefaultListableBeanFactory的创建3、XmlBeanDefinitinRead的创建1、classPathResource内部结构很简单,有两个重要属性:String path:存储资源路径的地址ClassL..原创 2021-02-03 18:25:02 · 246 阅读 · 2 评论 -
第4讲:BeanFactory的一个重要的实现类,DefaultListableBeanFactory,及资源的载入
为什么提这个类呢?直接说这个类可能会感到陌生,但是提到XmlBeanFactory,可能就有点感觉了吧,实际上DefaultListableBeafFactory是XmlBeanfFactory的父类。不管是哪个BeanFactory,他们的启动过程都类似,这里以DefaultListableBeanFactory为例启动Ioc容器的方式:XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.xml"))原创 2021-02-03 18:00:15 · 455 阅读 · 0 评论 -
第3讲:BeanFactory与FactoryBean简介
1、BeanFactory是一个最顶层的Ioc容器,它管理对bean的操作方法:(批量生产bean的工厂)BeanFactory中的方法:1》查找bean ————> getBean()2》判断BeanFactory中是否包含某个bean ——> containsBean()3》判断bean是否是单例类型 ——> isSingleton()4》bean是否是原型类型 ——> isPrototype()5》bean是否匹配某个类型 ——> isTypeMa原创 2021-02-03 17:45:55 · 303 阅读 · 0 评论 -
第2讲:IOC根容器BeanFactory简介
beanFactory是所有ioc容器的根接口1》它是所有Ioc容器的根接口,根据业务场景的不同,Ioc容器有不同的实行类(如:ClassPathAppcationContext、xmlPathApplicationContext等)。2》它鼓励所有实行该接口的Ioc容器尽可能支持Bean创建的生命周期方法,在BeanFactory类的注释里面列举了很多生命周期方法,并且是按照生命周期方法执行的顺序列举出来的。3》它里面定义的Ioc容器的通用规范方法,如:getBean()等具体了解该接口的原创 2021-02-03 17:30:49 · 227 阅读 · 0 评论 -
Spring框架源码解析
目录:SpringIOC:第2讲:IOC根容器BeanFactory详解第3讲:BeanFactory与FactoryBean详解第4讲:BeanFactory的一个重要的实现类,DefaultListableBeanFactory,及资源的载入第5讲:XmlBeanDefinitionReader与Resource第6讲:BeanDefinitionParserDelegate与资源解析第7讲:BeanDefinitionParserDelegate深入解读第8讲:spri原创 2021-02-03 17:26:40 · 251 阅读 · 0 评论