IOC容器

Javaweb开发及其解决方案
w

问题一:
需要在业务层new一个对象,new一个UserDaoImpl实现类,这就使得UserDaoImpl实现类和本方法高度耦合

解决思路:第三方根据要求为程序提供需要的Bean对象的代理对象
返回的对象是加强过的Bean对象,是通过特定方法加强过的对象,所以最后调用的不是对象,而是被加强的BeanProxy的一些方法,就能够达到对通用的方法的增强

三种思想的提出和框架概念

IOC思想指的是:创建对象的时候,不直接创建而是交给第三方来创建
DI思想指的是:如果Bean1中需要包含Bean2才能达到原有的一些效果
原先的做法是:从第三方获取Bean1和Bean2,再在程序代码中把Bean2设置给Bean1
DI思想中:把设置的步骤交给第三方,在第三方创建Bean1的时候就已经创建了Bean2,并把Bean2设置给了Bean1


Spring的概述




数据访问和web开发都是上层建筑部分,基于切面和核心容器上面存在的
BeanFactory版本
快速入门

创建第三方--->因为第三方不是我们手动编写的,而是Spring编写的,所以要导入Spring的jar包或者导入Maven坐标
编写Bean类
创建并配置配置文件--->创建对应的.xml文件,并将该类的信息配置到该XML中
编写测试代码,创建第三方,加载配置文件,获取该对象
IOC

Maven中已经配置好了核心内容:包括核心容器和切面相关



DI

告诉配置文件==告诉Bean工厂
在userServiceImpl中设置一个属性,包含name,ref两个属性,ref指的是去容器中找这个名字的类
name指的把ref当中指的容器交给userServiceImpl中属性名为name的属性


BeanFactory版本的依赖注入总结

重点是:1.在UserServiceImpl中添加一个setUserDao用于接收注入的对象
2.在xml配置文件当中嵌入<property>配置注入
3.在UserServiceImpl设置UserDao对象这个成员属性,这样之后UserServiceImpl中别的方法都可以调用这个对象
ApplicationContext版本的快速入门
ApplicationContext很多思想都源于BeanFactory

BeanFactory和ApplicationContext的关系

BeanFactory是早期的接口,主要是类方面的作用,ApplicationContext是后期的更高级的接口,有其他的功能

继承关系


"融合关系"
ApplicationContext 内部装了一个 BeanFactory 对象,所有底层的 Bean 管理工作都由它来做,ApplicationContext 只是一个 "带壳的超级工厂"。
ApplicationContext 在内部持有并使用 BeanFactory,把它作为自己实现的核心组件,而不是从零开始重写所有逻辑。
BeanFactory是在执行getBean之后才创建类
