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。

posted @ 2019-06-14 16:19  苏打水了面包  阅读(185)  评论(0编辑  收藏  举报