spring--ioc详细介绍

spring主要学习AOP和IOC概念

IOC :inverse of control 控制反转
控制反转:从主动实例化对象,转换到被动获取对象(spring用的反射技术实现)

ioc的实现方式多种多样,当前使用较多的是依赖注入(DI)
依赖注入:需要什么对象,容器就注入什么对象
依赖注入:
程序代码不做任何定位查询,这些工作由容器自行完成,只需要在程序中提供要使用的对象名称即可,至于对象如何在容器中创建、赋值、查找都由容器内部实现

依赖注入是指程序运行过程中,若一个对象需要调用其它对象,无须在代码中创建被调用者,而是依赖spring容器,由容器创建后传递给程序

ioc主要是用来实现对象装配的,比如controller调用service,controller中的service
对象要来自容器,也就是容器要把service对象装配到controller中。spring框架根据set方法(设值注入)或者构造函数实现对象的注入(构造注入)。
其实工作中很少使用构造注入和设值注入,用自动装配多点

自动装配(使用注解)?
spring会判断你需要什么类型的对象,然后不用你配置,直接给你实现注入
默认是根据type实现注入的
例如:UserController 需要UserService实例
那么容器会自动搜索对应类型的service实例,自动的装配到UserController
在这里插入图片描述在这里插入图片描述

ioc

IOC :inverse of control 控制反转或者依赖注入
控制反转:从主动实例化对象,转换到被动获取对象

例子:需要一个对象,之前是写代码Person p =new Person() 得到一个对象
有了spring 之后,只需要从spring 容器中获取即可
spring容器在我们拿对象的时候已经帮我们实例化好了,直接拿即可
这样做的目的就是解耦合,类跟对象实现解耦合,传过来什么类,实例化哪个类的对象

============================================================================
之前我们获取对象
在这里插入图片描述
现在通过spring容器获取对象,先配置
在这里插入图片描述获取对象
在这里插入图片描述===========================================================================

设值注入和构造注入

如下图当我们需要给UserBiz对象的dao赋值时,应该怎么做?(一个对象种注入另一个对象时)
在这里插入图片描述
之前的做法
在这里插入图片描述
第一种现在的做法,通过spring实现设值注入
在这里插入图片描述在这里插入图片描述

第二种现在的做法,通过spring实现构造注入
在这里插入图片描述============================================================================
总结:
设值注入
第一步
在这里插入图片描述在这里插入图片描述

============================================================================

ioc实例化时给对象属性赋值

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

自动装配(使用注解)

两种方式:按类型匹配,按名称匹配

====================================================
按类型匹配:

在这里插入图片描述
上面每增加一个类都会在配置文件增加一个bean

2.注解
使用注解好处:使配置文件更加简洁
注解缺点:增加新手读代码的难度

目前更偏向于注解

注解的工作原理很简单
1.读取配置信息,知道要扫描哪些包
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用注解如何把一个对象注入到另一个对象中
在这里插入图片描述
在这里插入图片描述============================================================

按名称匹配
在这里插入图片描述在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41150890/article/details/108087393
今日推荐