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的初始化和销毁时,执行的业务逻辑


浙公网安备 33010602011771号