1.手写spring-长路漫漫-1
前言
很久没有写博客了,这次手写spring,其实网上教程蛮多的。有朋友推荐在github上推荐给我了一个手写的spring。
这里我也仅仅是针对spring进行一个复习。
这里的手写也是简单的手写,主要是用来了解spring IOC 和AOP 的一些相关知识。所以希望大家不求甚解。
这次的手写也是分步骤进行的,具体的每一步参见github的tag标签
这里放上github的地址:https://github.com/MelonAnthony/wqspring
STEP1 最基本的构建
这里第一步,非常简单。我们都知道spring是面向bean的,而IOC容器也是bean的“家”。bean的一切相关都由IOC来管理。
那么,我们需要定义一个bean,在spring中关于bean的定义。用来描述bean的一些相关信息。
/** * @Auther: Anthony * @Date: 2019/6/14 15:25 * @Description:bean定义,装载bean的一些基本信息 */ public class BeanDefinition { private Object bean; public BeanDefinition(Object bean) { this.bean = bean; } public Object getBean(){ return bean; } }
第二步,就是关于bean的一些生命周期的管理,我们都知道bean是通过beanFactory来创建的,beanFactory负责管理bean的生命周期,这里我们也来创建一个最简单的beanFatory。用它来装载bean。
那么它就有一些基本功能(当然,最重要的还是创建bean,这里我们分步骤来写,所以先不用讲究那么多),如:注册bean 和 获取bean
public class BeanFactory { private Map<String,BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<String,BeanDefinition>(); public Object getBean(String name){ return beanDefinitionMap.get(name).getBean(); } public void registerBeanDefinition(String name , BeanDefinition beanDefinition){ beanDefinitionMap.put(name,beanDefinition); } }
这里我们就完成了最基本的IOC容器,用来存放和获取bean。