【公司深度】精测电子:立足平板显示检测拓展半导体及新能源领域

写在前面

写过java的都知道:所有的对象都必须创建;或者说:使用对象之前必须先创建。而使用ioc之后,你就可以不再手动创建对象,而是从ioc容器中直接获取对象。思维导图

就好像我们无需考虑对象的销毁回收一样,因为java垃圾回收机制帮助我们实现了这个过程;而ioc则是- 7 Q 6 v让我们无需考虑对象的创建过程,由ioc容器帮我们实现对象的创建、注入等过程。

天天用的spring框架,你可能根本没有弄明白其底层的原理(ioc)

控制反转

天天用的spring框架,你可能根本没有弄明白其底层的原理(ioc)

spring ioc容器

在Spring框架中的核心组件只有三个:Core、Context和Bean。它们构[ 5 F G R F m建起了整个Spring7 b % p r N的骨骼= @ d f r C架构,没有它们就不可能有A6 h & 3 DOP、Web等特性功能。

天天用的spring框架,你可能根本没有弄明白其底层的原理(ioc)

如果说在三个核心中再选出一个核心,那就非Bean莫属了。可以说,Spring就是面向Bean的编W i @ 1 ! * J程,Bean在Spring中才是真正G q k的主角。

S# 8 ] S J ! v Z vpring为何如此流行?你会发现Spring解决了一个非常关键的问题,它可以让你对对象之间的关系转而用配置文件来管理,或者注解,也就是它的依赖注入机制。而这个注入关系在一个叫Ioc的容器中管理。Ioc容器就是被BeaX E U t = tn包裹的对象。Spring正是通过把对象包装在Bean中从而达到管理这些对象及做一些列额外操作的目的。

天天用的spring框架,你可能根本没有弄明白其底层的原理(ioc)

天天用的spring框架,你可能根本没有弄明白其底层的原理(ioc)

天天用的spring框架,你可能根本没有弄明白其底层的原理(ioc)

核心组件协同工作

天天用的spring框架,你可能根本没有弄明白其底层的原理(ioc)

BeanFactory与ApplacationCK ! %ontext的区别

IOC中最核心的接口是Beanfactory提供IOC的高级服务,而ApplicationContext是建立在BeanFactoryZ j c ? T v $ x j基础之上提供抽象的面向应用的服务。

天天用的spring框架,你可能根本没有弄明白其底层的原理(ioc)

3种注入方式

在Spring框架中,依赖注入(DI)的设计模式是用来定义对象彼此间的依赖。使用xml配置bean的情况下,它主要有两种类型:

  • Setter方法注入
  • 构造器注: & & ; H S i .

当然,有了注解之后,使用注解的方式更加方便快捷。即自动装@ Z 6 - o 5 m f P配功能实现属性自动注入(@autowire)) B = ; 8 M 8

写到这里,让我想起了最近8 ` ? & U ) .在牛{ * ? ` ;客网上看的一道选择题了:

  下面有关spring的依赖注入,说法错误的是?

A、依赖注入通常有如下两种:设置注入和构造注入:
B- & `、构造注入可以在构造器中决定依赖关系的注入顺序,优先依赖的优先注入
C、当设值注入与构造注入同时存在时,先执行构造注入,再执行设值注入
D、设值注$ ~ A N } e入是V ! U X指IoC容器使用属性的setter方法来注入被依赖的实例。这种注入方式比较简单、直观

牛客_ & Z m网给出的答案是选C,不过网友们好像对答案有不同的意见哈。查看网友评论及答案

原理解析

Sp3 m ;ring的代码还真是不好读,分得太细了,文字也是难以描述出来,看了别人{ } M R ; 2 g有关的博客,贴了好多代码,画了好多ER图来描述关键接口或类之间的关系。这么一篇这么长文章下来,大家也未必会认真读代码,看ER图,干脆也不跟风了。就贴了一点在我看来特关键的代码,嘿嘿。

######context的初始化过程

当运行 ApplicationContext ctx = new ClassPathXmlApplicationContext(\"applicationContext.xml\"); 构造方法ClassPathXmlApplicationContext(String configLocation)调用了this(ne& a 5 W * A O %w String[] {configLocation}, true,T ] d p F Y : null);, 该构造方法具体代码如下。

天天用的spring框架,你可能根本没有弄明白其底层的原理(ioc)

天天用的spring框架,你可能根本没有弄明白其底层的原理(ioc)

######从时序图来看启动上述初始化

天天用的spring框架,你可能根本没有弄明白其底层的原理(ioc)

q O V Y [在最后,希望对在java开发3 U 0 3 ; t路上的你,有些帮助!

码农三哥,一名普通程序员,会点java软件开发,对AI人工智能有点兴趣,后续会Q V ! H N Q ~ D [每日分享( 2 A ,些关于互联网技术方面的文章,感兴趣的朋友可以关注我,一起交流学习。

想转型或刚步入程序员Java开发的朋友,有问题可以留言或私信我。

再次感谢你的阅读!

上一篇

巴菲特点破中国股市:假如你买的股票在尾盘最后半小时突然拉高,你明白是什么意思吗?

下一篇

李沁:我嫁衣紫色,杨幂:我嫁衣黑色,郭碧婷:我嫁衣全网独一件

你也可能喜欢

  • 暂无相关文章!

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片
返回顶部