![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/34ad555df50dccc0924b5387cbd8d4ac.png)
- 通俗理解:
- 生活中如何缺少某样东西,例如缺少一个扳手工具,正常思路是:到商店中买一把扳手,这就是传统资源查找方式:“组件向容器发起请求查找资源”
- 逆向思维:在家门口放一个篮子,上面写在我缺少一个扳手,之后由商店将扳手送过来放到篮子中,这就是:“反转资源获取方向”
在IOC之前获取对象的方式
- 分离接口与实现
- 在之前如果要实例化一个DAO操作类对象,需要知道这个DAO操作类的父接口,以及这个接口的实现子类,接着才可以实例化该DAO操作类的对象
IDeptDAO deptdao = new DeptDAOImpl();
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5a9d86e029324d1d728f1d5cba6d93c4.png)
- 采用工厂模式
- 第二种方式就是使用代理工厂类来实例化DAO操作对象,通过反射的方式获取DAO操作对象
IDeptDAO deptdao = DAOFactory.newInstance(DeptDaoImpl.class);
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7a590beb62065a4c176ac2bdc3a0c0a8.png)
IOC获取对象方式
- IOC通过IOC容器获取操作对象,这样就不需要知道任何对象操作的实现细节
ApplicationContext app =new ClassPathXmlApplicationContext("spring-config.xml");
HelloWorld helloWorld = (HelloWorld) app.getBean("deptdao");
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ff7f34fe4b6950b29991b1346043e715.png)