zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    函数的逻辑读成零
    SQL逻辑读变成零
    体系结构中共享池研究
    执行计划基础 动态采样
    执行计划基础 统计信息
    识别低效率的SQL语句
    oracle 知识
    XPATH 带命名空间数据的读取
    ACTIVITI 研究代码 之 模版模式
    ACTIVITI 源码研究之命令模式执行
  • 原文地址:https://www.cnblogs.com/Qiansion/p/11023922.html
Copyright © 2011-2022 走看看