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。

  • 相关阅读:
    HDU2586 How far away?(tarjan的LCA)
    You Raise Me Up
    POJ2891 Strange Way to Express Integers(中国剩余定理)
    POJ2142 The Balance(扩展欧几里得)
    HDU 1166模仿大牛写的线段树
    NetWord Dinic
    HDU 1754 线段树裸题
    hdu1394 Minimum Inversion Number
    hdu2795 Billboard
    【完全版】线段树
  • 原文地址:https://www.cnblogs.com/Qiansion/p/11023922.html
Copyright © 2011-2022 走看看