Spring
文章平均质量分 80
7k9c
世上只有一种英雄主义,就是在认清生活真相之后仍然热爱生活。
展开
-
Spring IOC 容器源码简单分析(四)——真实创建Bean
前言上篇只是在描创建单例的过程,小打小闹,真本事还得看我们createBeanInstance,走起了。<6-2-1>解析createBeanInstanceprotected BeanWrapper createBeanInstance(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) { Class<?> beanClass = resolveBeanClass(mbd, b原创 2021-03-09 14:11:14 · 199 阅读 · 1 评论 -
Spring IOC 容器源码简单分析(三)——创建单例Bean
前言在Spring IOC 容器源码简单分析(二)——获取单例Bean我们说了获取bean相关的一系列方法,就是先去缓存中获取,如果缓存没命中的话, 肯定就需要去创建bean了,那么在哪创建单例呢, 这就是上篇遗留的<5>和<6>的问题了,这个创建的过程很长,这篇文章可能一下写不完,慢慢来吧。话不多说,let’s go。由于接上文,因此还是沿用上次的习惯。<6> 解析createBean由于<5>的时候引用到了<6>,所以先来分析<原创 2021-03-04 17:31:20 · 187 阅读 · 1 评论 -
Spring IOC 容器源码简单分析(二)——获取单例Bean
前言第一篇在这里Spring IOC 容器源码简单分析(一)——从xml文件开始那次偷懒没写太多,现在打算好好写一下,就又开始了…let’s go。现在,让我们从BeanFactory的getBean(String name)出发,从头开始阅读IOC容器源码逻辑。在这个文章中,我会使用分支来解析,比如doGetBean下可能有几个方法需要看下,我会用数字注释,如 <1>,如果这个方法下还需要继续深入下,那么就<1-1>这样,其他的 像 1. 2. 只是对 方法的解释。从原创 2021-03-03 16:00:02 · 162 阅读 · 1 评论 -
Spring解决循环依赖源码解析
写在前面的话循环依赖是啥我就不说了,反正就是A依赖B,B又依赖A,然后就原创 2020-07-23 15:55:17 · 225 阅读 · 1 评论 -
Spring IOC 容器源码简单分析(一)——从xml文件开始
写在前面的话:首先,这块代码无疑是难以理解的,之前好几次准备认真看看到一半被绕来绕去绕晕了,然后就放弃了。最近还是决定拾起来看了,但不同以往,这次我是备而来的!看了《Spring 揭密》这本书(虽然没看完,但这不是重点 ),这本书比较老了,但是Spring 核心这么多年也没变化太多,看的是一个这本书给的一个思路。同时特地跟着tiny-spring这个项目走了遍它的逻辑,有了这个基础去理解Spring Ioc这块的源码起码有点底子,非常感谢这个项目的作者。其次,我觉得Spring代码很繁杂,很多方法没必要原创 2020-07-22 14:08:21 · 246 阅读 · 1 评论 -
Bean基于注解的配置
下面是一个使用注解定义一个DAO的Bean:import org.springframework.stereotype.Component;@Component("bookDao")public class BookDao {}它相当于:<bean id="bookDao" class="com.dao.bookDao" />@Component可以被S...原创 2018-03-24 21:05:19 · 565 阅读 · 0 评论 -
FactoryBean用法举例
先说为什么会使用FactoryBean。一般情况下,Spring通过反射机制利用bean的class属性指定实现类实例化Bean,在某些情况下,实例化Bean的过程比较复杂,按传统方式,则需要在 bean配置中提供大量配置信息。配置方式的灵活性受限的,这时采用编码的方式可能会获得一个简单的方案。Spring提供了一个org.springframework.beans.factory.Facto...原创 2018-03-24 19:55:40 · 1106 阅读 · 1 评论 -
Spring中Bean的生命周期
根据《Spring实战》上面描述的Bean的生命周期。 1.Spring对Bean进行实例化(相当于new一个对象)2.Spring将值和Bean的引用注入进Bean对应的属性中。3.如果Bean实现了BeanNameAware接口,Spring将Bean的ID传递给setBeanName()方法(实现BeanNameAware主要是为了通过Bean的引用来获得Bean的ID,一般业原创 2018-01-27 21:20:21 · 307 阅读 · 0 评论 -
Spring AOP基础 <一>
AOP概述AOP是Aspect Oriented Programing的简称,即“面向切面编程”。 如何理解这个含义,下面举一个例子。按照软件重构思想的理念,如果多个类中出现相同的代码,那么应该考虑定义一个父类,将这些相同的代码提取到父类中,如所有的动物类都应该有run()和eat()方法,通过引入一个抽象的Animal父类,这些动物类就可以通过继承Animal复用run()和eat()原创 2018-02-04 14:04:05 · 236 阅读 · 0 评论