IOC控制反转
核心思想:控制反转思想的核心就是把对象的控制权的“反转”(对象的控制权包括对象的创建、管理、调用等。在对象的生命周期的各个阶段进行相应的管理),由编码人员交还给“程序本身”去管理,这屏蔽了对象创建和管理等过程,使得程序员可以将精力聚集在更高层的逻辑上。IOC底层运用Java“反射”原理实现。
控制权的“反转”:
使用IOC思想进行编码的好处:控制反转可以将对象的创建和管理从程序内部,剥离开到程序外部,当程序运行需要时由“外部”提供。这个控制权的“反转”的这个过程,实现了程序的解耦合,降低了各个模块间的紧密度,避免在修改时“牵一发而动全身”,降低了程序的修改和管理成本。
降低各个模块之间的依赖:
spring对IOC思想的实现:spring使用“IOC容器”去对对像的各个生命周期进行相应管理。所谓的容器完成了从编码人员手中接过对象的控制权,帮助我们实在对象的管理。获取“IOC容器”的方法有两种,BeanFactory和ApplicationContext。BeanFactory是获取容器的根接口,ApplicationContext继承于BeanFactory。
继承关系:
1、BeanFactory接口面向spring内部,是框架本身使用的接口。
spring官方对他的描述是这样的:
我们可以看到这其中的重点是“BeanFactory提供了配置框架和基本功能,而ApplicationContext添加了更多企业特定的功能。”即BeanFactory是配置框架的基本,而ApplicationContext是对BeanFactory拓展。
2、ApplicationContext继承BeanFactory接口,对该接口的功能进行了拓展。它本身是直接面向开发人员的,因此我们日常开发中绝大部分时候都是使用ApplicationContext而非BeanFactory。
ClassPathXmlApplicationContext和FileSystemXmlApplicationContext是该接口的主要实现类。
ClassPathXmlApplicationContext:
FileSystemXmlApplicationContext:
3、spring中文文档
4、补充:
单例模式的定义。单例模式是指在内存中只会创建且仅创建一次对象实例的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。