IOC容器
IOC即控制反转:把对象创建和对象之间的调用过程,交给Spring进行管理;
目的:使用IOC可以降低耦合度。
一、IOC底层原理
xml解析+工厂模式+反射
1、原始的方法:UserService类中的方法execute想要调用UserDao类中的add方法的做法。耦合度很高!!
2、IOC过程:
二、IOC接口
IOC思想基于IOC容易完成,IOC容器底层就是对象工厂
Spring提供了IOC容器实现的两种方式(2个接口):
(1)BeanFactory:Spring内部的使用接口,不提供开发人员使用;
加载配置文件时不会创建对象,在获取对象(使用)才去创建对象。
(2)ApplicationContext:BeanFactory接口的子接口, 提供更多更强大的功能,一般由开发人员使用;
加载配置文件的时候就进行对象的创建。
三、IOC操作Bean管理
Q:什么是Bean管理?
A:指的是两个操作:Spring创建对象+Spring注入属性
bean的生命周期:
1.通过构造器创建bean实例(无参数构造)
2.为bean的属性设置值和对其他bean引用(调用set方法)
3.调用bean的初始化方法(需要进行配置)
4.beaan可以使用了(对象获取到了)
5.当容器关闭时候,调用bean的销毁方法(需要进行配置销毁的方法)
1、IOC操作Bean管理(基于xml方式)
(1)基于xml方式创建对象
在spring配置文件中,使用bean标签,标签里面添加对应属性,就可以实现对象的创建;创建对象的时候,默认也是执行无参数构造方法。
bean标签里常用属性:
属性名 | 作用 |
---|---|
id | 唯一标识 |
class | 类全路径(包类路径) |
(2)基于xml方式注入属性
DI:依赖注入,就是注入属性
第一种注入方式:使用set方法进行注入
- 创建类,定义属性和对应的set方法
- 在spring配置文件中配置对象创建,配置属性注入
第二种方式:有参构造注入
1.创建类,定义属性,创建属性对应有参数构造方法
2.在spring配置文件中进行配置
在xml注入其他类型属性:
1.字面量
(1)null 值
(2)属性值中包含特殊字符
2.集合属性
详细查看此篇博客
(1)注入数组类型属性
(1)注入List集合类型属性
(1)注入Map集合类型属性
2、IOC操作bean管理(基于注解方式)
2.1:什么是注解
(1)注解是代码的特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值…)
(2)使用注解,注解作用在类、方法、属性上都可以
(3)使用目的:简化xml配置
2.2:Spring针对Bean管理中创建对象提供注解
(1)@Component
(2)@Service
(3)@Controller
(4)@Repository
注:上边的四个注解功能是一样的,都可以用来创建bean实例
2.3:基于注解方式实现对象创建
(1)引入aop的依赖jar包
(2)开启组件扫描
扫描多个包:
方法1:
方法2:
(3)创建类,在类上面添加创建对象注释
2.4:基于注解方式实现属性注入
(1)@AutoWired:根据属性类型进行自动装配
(2)@Qualifier:根据属性名称进行注入
(3)@Resource:可以根据类型注入,也可以属性名称进行注入
(4)@Value:注入普通类型属性