spring主要学习AOP和IOC概念
IOC :inverse of control 控制反转或者依赖注入
控制反转:从主动实例化对象,转换到被动获取对象(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.读取配置信息,知道要扫描哪些包
使用注解如何把一个对象注入到另一个对象中
============================================================
按名称匹配