1、什么是IOC?
1.1、控制反转
控制反转的英文即Inversion of Control(IOC),换言之:就是一个bean容器,专业的说法叫做控制反转。它的作用就是在spring启动时会去将一个个bean放到这个容器当中。bean可以通过配置文件定义也可以通过注解定义。
1.2、用图表示:
这张图感觉最生动地体现了IOC。
2、Spring IOC底层
2.1、没有采用IOC之前:
原始采用一个类方法中new另一个类的实例来进行调用违反了迪米特法则。当B类改变所有依赖它的类都需要改变!
2.2、采用IOC
利用IOC这种工厂的思想
2.3、IOC解耦
采用工厂这种模式,再配置XML,从XML中取出配置好的bean对象。
第一步配置XML文件,配置创建的对象:
<bean id="mysqlImpl" class="com.demo.pro.UserDaoMysqlImpl"/>
第二步在加载配置文件时候就进行对象的创建(常用)
ApplicationContext context= new ClassPathXmlApplicationContext("beans.xml");
而这个context就类似于工厂,接下来就可以取出对象就行:
UserService userService=(UserService) context.getBean("mysqlImpl");
从而可以调用对象的方法:
userService.getUser();
简而言之,Spring采用了这种工厂模式注入对象,而这也是Spring的核心之一!!!!