课程名称:Spring入门
课程章节:第1章 IoC概念介绍
课程讲师: 西昆仑
课程内容:
1、IoC概念介绍
什么是IoC
Inversion of Control,控制反转、依赖注入
1)控制什么?控制对象的创建及销毁(生命周期)
2)反转什么?将对象的控制权交给IoC容器
为什么用IoC
传统实现代码的高耦合性:所有行为需要主动创建对象,当对象类型变化替换工作量大
方法改进
2、实现自己的一个IoC
约定:
所有Bean的生命周期交由IoC容器来管理
所有被依赖的Bean通过构造方法执行注入
被依赖的Bean需要优先创建
容器实现的功能
实例化bean
保存bean
提供bean
1)每一个bean要产生一个唯一的id与之相对应
2)委托IoC容器创建一个bean
//组装构造方法所需要的参数值
Object[] paramValues = new Object[paramBeanIds.length];
for(int i=0;i<paramBeanIds.length;i++){
prarmValues[i]=beans.get(paramBeanIds[i]);
}
//调用构造方法实例化bean
Object bean = null;
for(Constructor<?> constructor : clazz.getConstructors()){
try{
bean = constructor.newInstance(paramValues);
}catch(InstantiationException e){
}catch(IllegalAccessException e){
}catch(InvocationTargetException e){
}
}
if(bean == null){
throw new RuntimeException("找不到合适的构造方法去实例化bean");
}
//将实例化的bean放入beans
beans.put(beanId,bean);
3)方法测试
3、Spring IoC入门
1)Spring依赖引入
2)创建XML配置文件
3)获取spring上下文
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
4)获取bean
Bean bean = context.getBean("bean",Bean.class);
课程收获:
本节课程通过自己编写Ioc容器与Spring管理的Ioc容器作对比,使用Spring Ioc的优势、实现原理理解更加容易,期待后续针对Ioc的更多应用课程讲解。