什么叫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经常用于扩展该类

 <bean  id ="user" class="com.atuguigu.spring5.User"></bean>

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

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

工厂模式

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

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

Logo

Authing 是一款以开发者为中心的全场景身份云产品,集成了所有主流身份认证协议,为企业和开发者提供完善安全的用户认证和访问管理服务

更多推荐