ioc控制反转
将对象创建和调用过程交给spring
相当于把所有对象变成spring大对象的属性。然后通过spring大对象进行统一调用
(创建一次大对象(加载配置文件)就可以用里边的所有类)
ioc底层原理
xml解析,工厂模式,反射
ioc过程
第一步 xml配置文件创建配置对象
<bean id="a" class="com.A"></bean>
创建工厂
Class AFactory{
public static A getA(){
String AValue=class属性值;//xml解析得到类名com.A ***知道返回了com.A但还是不知道class属性值到底是什么(会是id吗)***
Class claa=Class.forName(AValue);//通过反射创建对象
return (A)claa.newInstance()//强转之后返回
}
}
ioc思想基于ioc容器完成,ioc容器底层是工厂
ioc接口的两种实现方式
BeanFactory:spring内部使用,开发不用
加载配置文件时不会去创建对象,调用时才创建(启动完服务器再创建耗时间)
ApplicationContext,上面的子接口功能更多更强
加载配置文件时就创建对象,无论用不用
application的两个实现类
FileSystemXmlApplicationContext 绝对路径c:/…
ClassPathXmlApplicationContext 相对路径