Ioc是Inversion of Control的缩写,被称为控制反转,是Spring框架中其他功能的基础,因此,理解并能够熟练使用Ioc是进一步学习Spring 框架的前提必要。
①什么是Ioc
任何一个应用,都是若干个对象互相协作完成的。创建一个对象后,总是需要对这个对象所依赖的属性进行初始化。在实际应用中,一个对象越复杂(依赖的属性多),对其装配的过程也将越复杂。通过dbcp连接池的例子进行说明,dbcp包中的数据源实现类是BasicDataSource,通过该类可以从连接池中获得数据库连接对象,可以说BasicDataSource类是使用dbcp连接池的关键类,该类是一个复杂的类,需要配置很多属性。
使用非Ioc方式装配使用BasicDataSource对象:
要使用dbcp连接池,首先需要下载dbcp的支持包并导入到当前工程;
要连接数据库,需要将数据库驱动包导入到工程中;
导入了必要的支持包后,就可以编写java代码使用dbcp连接池。
在java代码中,关键的对象是BasicDataSource,要正确使用该对象,需要使用大量的setXXX方法,对其依赖的属性进行赋值,比如setDriverClassName、setUrl等。在实际使用中,有大量这样的对象。Ioc就是将代码中生成BasicDataSource对象的过程交给容器实现,而不在代码中实现,也就是说,以前是在代码中控制对象的生成和属性的注入,而在使用Ioc后,就将设计好的类交给Ioc容器,让Ioc容器控制对象的生成和属性的注入,称为控制反转。生成对象的过程,就是将对象依赖的属性进行注入的过程,因此Ioc也称为D