spring--ioc详细介绍

spring主要学习AOP和IOC概念

IOC :inverse of control 控制反转或者依赖注入
控制反转:从主动实例化对象,转换到被动获取对象(spring用的反射技术实现)
依赖注入:需要什么对象,容器就注入什么对象
ioc主要是用来实现对象装配的,比如controller调用service,controller中的service
对象要来自容器,也就是容器要把service对象装配到controller中。spring框架根据set方法(设值注入)或者构造函数实现对象的注入(构造注入)。
其实工作中很少使用构造注入和设值注入,用自动装配多点

自动装配(使用注解)?
spring会判断你需要什么类型的对象,然后不用你配置,直接给你实现注入
默认是根据type实现注入的
例如:UserController 需要UserService实例
那么容器会自动搜索对应类型的service实例,自动的装配到UserController
spring--ioc详细介绍spring--ioc详细介绍

ioc

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

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

============================================================================
之前我们获取对象
spring--ioc详细介绍
现在通过spring容器获取对象,先配置
spring--ioc详细介绍获取对象
spring--ioc详细介绍===========================================================================

设值注入和构造注入

如下图当我们需要给UserBiz对象的dao赋值时,应该怎么做?(一个对象种注入另一个对象时)
spring--ioc详细介绍
之前的做法
spring--ioc详细介绍
第一种现在的做法,通过spring实现设值注入
spring--ioc详细介绍spring--ioc详细介绍

第二种现在的做法,通过spring实现构造注入
spring--ioc详细介绍============================================================================
总结:
设值注入
第一步
spring--ioc详细介绍spring--ioc详细介绍

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

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

spring--ioc详细介绍
spring--ioc详细介绍spring--ioc详细介绍

spring--ioc详细介绍
spring--ioc详细介绍

自动装配(使用注解)

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

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

spring--ioc详细介绍
上面每增加一个类都会在配置文件增加一个bean

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

目前更偏向于注解

注解的工作原理很简单
1.读取配置信息,知道要扫描哪些包
spring--ioc详细介绍spring--ioc详细介绍

spring--ioc详细介绍
spring--ioc详细介绍
spring--ioc详细介绍
spring--ioc详细介绍
spring--ioc详细介绍
使用注解如何把一个对象注入到另一个对象中
spring--ioc详细介绍
spring--ioc详细介绍============================================================

按名称匹配
spring--ioc详细介绍spring--ioc详细介绍