Spring——(一)IoC

一. 什么是IOC?

IOC:inversion of Control 控制反转。

1. 控制反转:即控制权由应用程序代码转到了外部容器。(反转:就是控制权的转移)。——降低业务对象之间的依赖程度,即实现了解耦。

2. 实现:IOC容器主要使用DI(Dependency Injection依赖注入)方式实现的。也就是说:对象的查找、定位、创建全部由容器管理,容器会将符合依赖关系的对象通过属性(setter等)或者构造函数来传递给需要的对象。

3. 举例:找对象,传统的方法,我们到处去找符合各种条件的对象,然后打听他们的兴趣爱好,想办法认识他们,最后和他们在一起结婚。容器的思想是,存在一个婚姻介绍所,他管理了很多对象的资料。我们先向婚姻介绍所提供一个列表,告诉他我对对象的各种要求,婚姻介绍所会为我们筛选出符合这些条件的对象,如果提供的对象不符合我的条件,那么抛出异常。

在这里:整个过程不再由我控制,而是由婚姻介绍所这样一个类似容器的机构来控制。

4. 概述而言,Spring:所有的类都在Spring容器中登记,告诉他你是个什么东西,需要什么东西。然后Spring再系统运行到适当的时候,就把你需要的东西给你,同时把你给其他需要你的东西。所有类的创建、摧毁都由Spring控制。也就是说,控制对象生存周期的不再是引用它的对象,而是spring。

其实,我们可以把IoC看做是工厂模式的升华,IoC好比是一个大工厂,只不过在这个大工厂里生成的对象都是在XML文件中定义的,然后利用Java的反射实例化。在没有Spring之前我们也是这么做的,只是Spring的IoC更加强大完善。

5. 缺点:

1、使用反射变成,在效率上有些损耗。

2、缺乏更加智能的IDE,写XML中时,错误不容易暴露,推迟到运行期才能发现。

但相对于IoC提高的维护性和灵活性来说,这点缺点又显得微不足道

6. 面试的考点:

  • 对IOC和AOP的理解
  • 应用场景

二. IoC的实现

1. bean:

bean是Spring管理的基本单位,在基于Spring的Java EE应用中,所有的组件都被当成Bean处理,包括数据源、hibernate的SessionFactory、事务管理器等。例如我们可以设置一个bean如下:

<bean name = "testSpring" class = com.sbw.spring.TestSpring>
</bean>

//设置别名:
<alias name = "testSpring" alias = "test"/>
原文地址:https://www.cnblogs.com/lesleysbw/p/6254186.html