1. 为什么使用控制反转
传统的new方式:耦合度太高,比如UserDao的路径变化了,调用UserDao的所有UserService都需要改,十分麻烦
通过工厂模式解耦合:当UserDao路径变化了,只需要改UserFactory中UserDao的创建就可以了。
目前控制反转IOC方式:以上工厂模式还是有一定的缺点,需要更改工厂类,也就是需要改代码,改代码整个项目需要重新编译,十分麻烦。因此,通过xml配置文件读取类路径,再通过反射创建对象,只要更改配置文件的值即可,耦合度进一步降低。
2. IOC接口
-
IOC 思想基于IOC容器完成,IOC 容器底层就是对象工厂。
-
Spring 提供IOC容器实现两种方式: (两个接口) 。
- BeanFactory: IOC 容器基本实现,是Spring内部的使用接口,不提供开发人员进行使用。
加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象。 - ApplicationContext: BeanFactory 接口的子接口,提供更多更强大的功能,一般由开发人
员进行使用。
加载配置文件时候就会把在配置文件对象进行创建。
- BeanFactory: IOC 容器基本实现,是Spring内部的使用接口,不提供开发人员进行使用。
-
ApplicationContext有两种实现类
- ClassPathXmlApplicationContext:类路径
- FileSystemXmlApplicationContext:绝对路径