2019-12-15 spring IoC + 简单实现

一、spring IoC 的学习

https://www.imooc.com/learn/1108

二、概念

1、控制?

  控制对象的创建和销毁(生命周期)。

2、反转?

  将对象的控制权交给IoC容器。

三、spring做了什么。

spring框架讲究“约定大于配置”

1、约定

  a、将所有Bean的生命周期交给IoC容器管理。

  b、所有被依赖的Bean通过构造方法执行注入。

  c、被依赖的Bean需要优先创建。

四、简单仿照spring的思想,实现一个IoCcontroller

public class IoCController {
    private Map<String,Object> beanMap=new ConcurrentHashMap<>();
    public Object getBean(String beanName){
        return beanMap.get(beanName);
    }
    public void setBean(Class<?> clazz,String beanName,String... paramBeanNames) throws Exception {
        Object[] paramBeanValues=new Object[paramBeanNames.length];
        for (int i = 0; i < paramBeanNames.length; i++) {
            paramBeanValues[i]=beanMap.get(paramBeanNames[i]);
        }
        Constructor<?>[] constructors = clazz.getConstructors();
        //调用构造方法,实例化bean
        Object bean=null;
        for (Constructor constructor:constructors){
            try {
                bean=constructor.newInstance(paramBeanValues);
            } catch (InstantiationException e) {
            } catch (IllegalAccessException e) {
            } catch (InvocationTargetException e) {
            }
        }
        if(bean==null){
            throw new Exception("找不到合适的构造方法去实例化bean");
        }
        beanMap.put(beanName,bean);
    }
}

 

五、spring设置bean的初始化和销毁时,执行的业务逻辑

posted @ 2019-12-15 11:08  math_lin  阅读(135)  评论(0)    收藏  举报