为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Java

课程名称:Spring入门

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

课程讲师: 西昆仑

课程内容:

1、IoC概念介绍

  • 什么是IoC

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

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

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

  • 为什么用IoC

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

https://img1.sycdn.imooc.com//63f4aaa80001789014460816.jpg

  • 方法改进

https://img1.sycdn.imooc.com//63f4aae60001730214460812.jpg

2、实现自己的一个IoC

约定:

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

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

被依赖的Bean需要优先创建

容器实现的功能

  • 实例化bean

  • 保存bean

  • 提供bean

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

https://img1.sycdn.imooc.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)方法测试

https://img1.sycdn.imooc.com//63f4ab8e0001251414520814.jpg

https://img1.sycdn.imooc.com//63f4ab930001e51614520816.jpg

3、Spring IoC入门

1)Spring依赖引入

https://img1.sycdn.imooc.com//63f4abda0001864914540818.jpg

2)创建XML配置文件

https://img1.sycdn.imooc.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的更多应用课程讲解。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消