乐趣区

关于java:Spring-FrameWork从入门到NB-Ioc

SpringFramework 是 Spring 全家桶的根底,并且曾经是公认的 java 开发基准框架,当初的 java 开发,没有 spring framework 会举步维艰。

正是因为 Spring 曾经变成了以后 JAVA 开发的事实上的霸主,绝大部分的 JAVA 我的项目都不太可能没有 Spring,而且,最重要的,绝大部分的初学者如果不把握 Spring,你可能就很难入门:你拿不到 offer,即便是小公司的 offer 你都拿不到。

所以初学者,包含大学校园里学完 JAVA 根底课程的学生,或者刚入职场的 JAVA 菜鸟,都有必要对 Spring 经验一遍“从入门到 NB”的过程。

咱们先从一个面试问题说起。

面试题:你对 Spring Framework 的了解

最常见的答复,包含:Java 开源、可配置、一站式开发框架,外围是 IOC 与 AOP,让开发者可能采纳最简略的形式构建出企业级 java 利用。

很多小伙伴说完下面一段之后就停下来了,面试官很尴尬,只能持续问:而后呢?

小伙伴(心里嘀咕:还有什么而后 … 没了):嗯 … 而后就是能够应用注解的形式简化开发,帮忙程序员实现了许多特地麻烦的配置,能够通过 AOP 实现拆散关注,让程序员可能专一于实现业务逻辑自身 ……

这次就真的没有而后了。

其实集体感觉,对这个问题答复 IOC 和 AOP,尤其是答复了 Ioc 和 AOP 之后就认为曾经答复了无关 Spring Framework 的全副问题的,基本就没有说到点子上,或者说你基本就不理解 Spring Framework。

对 Srping Freamwork 的概念的解释,上来首先说 Srping Freamwork 是一个容器,比间接说 IOC 和 AOP 给人的感觉要好得多。这些 IOC、AOP、轻量级、松耦合之类的概念,对于你真正了解 Srping Freamwork,或者说对于面试官很好的了解你对 Srping Freamwork 框架的意识和把握,远没有以下知识点来的重要、且间接:

  1. Srping Freamwork 其实是一个容器,这个容器以 bean 的形式治理咱们创立的类
  2. 有了 Srping Freamwork,程序员编写代码创立“类”之后,Srping Freamwork 通过 Ioc 的形式帮忙咱们创建对象,也就是咱们所说的 bean
  3. Srping Freamwork 创立 bean 之后,保留在容器中
  4. 咱们在须要应用对象的时候,能够从 Srping Freamwork 容器中十分不便的获取(DL 或 DI)
  5. Srping Freamwork 能够采纳动静代理的机制创立 bean,并在此基础上帮忙程序员实现 AOP 性能

对于“如何了解 Srping Freamwork”这个问题,以上几点纲要式的答复,感觉曾经足够了。这个答复能起到提纲挈领的作用,面试官对其中任何一个问题感兴趣,都能够持续深刻上来。

这样的答复,比水灵灵的 Ioc、Aop、松耦合、可配置等等,更能切中要害。

当然,要想很好的深刻答复面试官可能提出的进一步的问题,还须要持续深刻学习。

什么是 IoC

Ioc 是 Inversion of Control 的首字母简写,即反转管制,其实 Spring 官网的文档介绍 Ioc 的时候,是说 Ioc Container, 反转管制容器:

Introduction to the Spring IoC Container and Beans
This chapter covers the Spring Framework implementation of the Inversion of Control (IoC) principle. IoC is also known as dependency injection (DI).

意思是说说 Spring 提供了一个容器、具备反转管制的能力,Spring 容器的反转管制的能力和他的一个个性:dependency injection(DI)- 依赖注入无关,Spring 容器正是通过依赖注入来提供 IoC 能力。

所以说反转管制 IoC 其实和依赖注入(DI)是分不开的,Spring 是通过 DI 提供 IoC 的。

为什么叫 IoC- 反转管制呢?所谓的反转,必定是和传统的解决形式(类之间的依赖关系的解决形式)比较而言的。为阐明问题,与 Spring 的“反转管制”绝对应,咱们假如传统的解决形式叫“失常的管制”。

假如咱们创创立了一个类 A,外面蕴含各种属性,其中一个属性(属性 b)是另外一个类 B。

“失常的管制”过程是这样的:在应用的时候咱们会通过 new 创立类 A 的一个对象 A1,给对象 A1 的各属性赋值,赋值过程中咱们须要创立类 B 的对象 B1,把对象 B1 赋值给 A1 的属性 b。

每次利用须要应用类 A 的时候,咱们可能都须要反复上述过程创立、筹备好类 A 的对象,提交给利用去应用。

Spring IoC 的管制形式从某种意义上了解正好和这个“失常的管制”相同(这应该也是反转管制这个名字的由来):Spring 的 IoC 容器创立类 A 的对象 A1,并创建对象 B 的对象 B1,并且,Spring IoC 容器还负责将对象 B1“注入”到对象 A1 中,让 A1 不创立而间接持有对象 B1。这样一来,Spring 就反转了以往的对象创立的控制权:以往是对象 A1 把握着创立本人的属性 (对象 B1) 的控制权,当初这个控制权被反转了,A1 没有控制权了,等着 Spring IoC 容器投喂(依赖注入)就好了。

IoC 容器创立好的对象,咱们对立管他叫 bean,创立好的 bean 都装在容器中,利用随时能够从容器中获取。

所以,依赖注入 DI 是 IoC 容器在创立 bean 的过程中的一项技术或者概念,正是通过 DI,Spring 创立的对象才是一个“饱满的”、利用能够应用的对象,换句话说,DI 是负责 bean 的属性赋值的,没有 DI,Spring 创立的对象就是一个无奈应用的空对象。所以,DI 能够说是 IoC 的灵魂,咱们放在下一篇文章剖析。

上一篇 Mybatis 的 log 机制

退出移动版