继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【备战春招】第15天 Spring入门

慕名9214806
关注TA
已关注
手记 21
粉丝 0
获赞 0

课程名称:Spring入门

课程章节:第1章 IoC概念介绍

课程讲师: 西昆仑

课程内容:

1、IoC概念介绍

  • 什么是IoC

Inversion of Control,控制反转、依赖注入

1)控制什么?控制对象的创建及销毁(生命周期)

2)反转什么?将对象的控制权交给IoC容器

  • 为什么用IoC

传统实现代码的高耦合性:所有行为需要主动创建对象,当对象类型变化替换工作量大

http://img.mukewang.com/63f4aaa80001789014460816.jpg

  • 方法改进

http://img4.mukewang.com/63f4aae60001730214460812.jpg

2、实现自己的一个IoC

约定:

所有Bean的生命周期交由IoC容器来管理

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

被依赖的Bean需要优先创建

容器实现的功能

  • 实例化bean

  • 保存bean

  • 提供bean

1)每一个bean要产生一个唯一的id与之相对应

http://img.mukewang.com/63f4ab2800012bd614520816.jpg

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)方法测试

http://img4.mukewang.com/63f4ab8e0001251414520814.jpg

http://img1.mukewang.com/63f4ab930001e51614520816.jpg

3、Spring IoC入门

1)Spring依赖引入

http://img4.mukewang.com/63f4abda0001864914540818.jpg

2)创建XML配置文件

http://img3.mukewang.com/63f4ac240001aace11610653.jpg

3)获取spring上下文

ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");

4)获取bean

Bean bean = context.getBean("bean",Bean.class);

课程收获:

本节课程通过自己编写Ioc容器与Spring管理的Ioc容器作对比,使用Spring Ioc的优势、实现原理理解更加容易,期待后续针对Ioc的更多应用课程讲解。


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP