什么是ioc

什么叫ioc

(1)ioc叫做控制反转,是面向对象的一种设计方式,

(2)把对象的创建和对象之间的调用过程,交给spring管理。

(3)目的:为了使耦合度降低

(耦合度:我有多个service类,都需要调用一个dao类,当我修改这个dao类的位置时,则多个service类中都要修改,麻烦。尽量降低耦合度,我可以弄一个中间类,service类通过中间类调用dao类,这样当要修改dao的位置时,只用修改中间类即可)

在一个类中,我想调用另一个类的方法,不必生成这个类的实例,直接从spring获取,就叫ioc。

之前做的入门案例就是ioc的实现

ioc的底层:

ioc是一个容器,本质上就是一个对象工厂(读取配置文件,通过反射创建类)

Spring提供了 ioc 容器实现的两种方式(两个接口),

BeanFactory context= new ClassPathXmlApplicationContext("demo1.xml");
ApplicationContext context= new ClassPathXmlApplicationContext("demo1.xml");

两个接口的功能相似

1.BeanFactory

BeanFactory 是基本的实现,一般都不用,在加载配置文件 demo1.xml时,并不会创建demo1.xml中对象,在获取或使用的时候才会去创建对象
ConfigurableApplicationContext经常用于扩展该类

什么是ioc_第1张图片

 

2.ApplicationContext
ApplicationContext是BeanFactory的子类,一般用这个,加载配置文件 demo1.xml。会创建demo1.xml中对象   主要有两个实现类(就是子类),如下,

什么是ioc_第2张图片

FileSystemXmlApplicationContext 文件的绝对路径
ApplicationContext context= new FileSystemXmlApplicationContext("E:\\springProject\\test1\\src\\demo1.xml");
ClassPathXmlApplicationContext  src下的路径
 ApplicationContext context= new ClassPathXmlApplicationContext("demo1.xml");

工厂模式

定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。

你可能感兴趣的:(java-spring,容器,java,运维)