| IOC 思想基于 IOC 容器完成,IOC 容器底层就是对象工厂 | ||||
种类 | Spring 提供 IOC 容器实现两种方式:(两个接口)
|
IOC底层原理
2021年3月3日
20:37
IOC概念 | spring ioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring容器统一进行管理,从而实现松耦合
| ||
目的 | 降低耦合度 | ||
IOC底层技术 | xml解析、工厂模式、反射 | ||
背景 |
| ||
流程图 | |||
系统文件 | demo.class baseDao.class Utils.class |
模拟IOC |
| ||||||||||||||||||
demo结构 |
|
文件名(类名)
io读取
调用
List<Class<?>> package路径下所有类的类对象
| |
| |
|
调用
扫描目录下的class | |
新建对象 | |
|
IOC容器
放入新建对象
域 | |
packageName | |
beans |
调用
|
| ||||||
获取类属性 | |||||||
遍历判断 |
|
调用
完成依赖注入
程序视图
调用
用户视图
十、
调用构造方法,完成IOC初始化
构造方法(初始化) | |
域初始化 | |
新建对象 | |
依赖注入 |
域的初始化
调用getBean()获得对象
|
IOC bean 配置
2021年3月3日
20:38
bean管理 |
|
方式 |
|
XML管理方式
2021年3月9日
20:11
基于 xml 配置文件方式实现
2021年3月6日
19:53
配置 |
| ||||||||||
标签属性 |
| ||||||||||
配置文件格式示例 |
|
依赖注入 | DI:依赖注入,就是注入属性
| ||||
手动注入 |
|
配置文件注入 |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<bean>标签注入 |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
有参构造注入 |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
p 名称空间注入 |
|
自动装配(xml自动装配)
2021年3月6日
20:34
概念 | 根据指定装配规则(属性名称或者属性类型),Spring 自动将匹配的属性值进行注入 | |||||||||
使用 | 通过在<bean>标签中声明autowire属性来开启自动装配,通过设置autowire的值来设置自动装配的方式 | |||||||||
属性 |
| |||||||||
匹配事项 |
| |||||||||
示例 |
|
外部属性文件
2021年3月9日
20:11
原始方式 | |
缺点 |
|
外部属性文件 |
| |||||||||||||||||
使用 |
| |||||||||||||||||
示例 |
注解管理方式
2021年3月9日
19:35
注解 | 注解是代码特殊标记格式 | |
格式 |
| |
使用范围 | 作用在类上面,方法上面,属性上面 | |
目的 | 简化 xml 配置 |
准备步骤 |
|
注解创建对象
2021年3月9日
21:44
创建对象 | Spring 针对 Bean 管理中创建对象提供注解 | ||||||||||
种类 |
| ||||||||||
使用 |
| ||||||||||
使用示例 |
|
注解注入属性
2021年3月9日
21:44
|
| |||||||||||||||
|
| |||||||||||||||
|
| |||||||||||||||
|
|
完全注解开发
2021年3月10日
19:11
原来做法 |
|
完全注释开发 | 不需要任何xml配置文件,完成注解开发 | |||||
使用 |
| |||||
示例 |
bean
2021年3月7日
21:22
概述 | Spring 有两种类型 bean
| ||||
|
|
FactoryBean 使用示例
2021年3月7日
20:38
xml配置文件 |
bean对象创建
bean_a.class | Object |
判断 | 是否实现了FactoryBean<T> 类
|
否
是,调用
getObject()
bean_a.class | Object |
调用方法 转换对象 |
bean_b.class | Object |
放入
放入
IOC容器 |
获取bean_b
获取bean_a
注意事项 |
已经转化成了bean_b
|
bean的作用域
2021年3月7日
21:22
概述 |
| ||||||||||||||||||||
设置方法 |
| ||||||||||||||||||||
单实例 |
| ||||||||||||||||||||
多实例 |
|
bean生命周期
2021年3月7日
22:18
定义 | 从对象创建到对象销毁的过程 | ||||||||||||||||||||
阶段 |
| ||||||||||||||||||||
方法实现
|
| ||||||||||||||||||||
常用扩展点 |
| ||||||||||||||||||||
影响多个Bean的接口 |
| ||||||||||||||||||||
周期图 |
Interface BeanFactory
2021年3月6日
19:20
Info |
| ||||||||||||
Fields |
| ||||||||||||
Constructor |
| ||||||||||||
Method Summary |
|
Interface ApplicationContext
2021年3月6日
19:28
Info |
| ||||||
Fields |
| ||||||
Constructor |
| ||||||
Method Summary |
|
Class ClassPathXmlApplicationContext
2021年3月6日
19:31
Info | Standalone XML application context, taking the context definition files from the class path | ||||||
Fields |
| ||||||
Constructor |
| ||||||
Method Summary |
Methods inherited from class org.springframework.context.support.AbstractApplicationContext |
Class FileSystemXmlApplicationContext
2021年3月6日
19:31
Info |
| ||||||
Fields |
| ||||||
Constructor |
| ||||||
Method Summary |
Methods inherited from class org.springframework.context.support.AbstractApplicationContext |
Class AnnotationConfigApplicationContext
2021年3月10日
19:32
Info |
| ||||||
Fields |
| ||||||
Constructor | AnnotationConfigApplicationContext(Class<?>... componentClasses) Create a new AnnotationConfigApplicationContext, deriving bean definitions from the given component classes and automatically refreshing the context. | ||||||
Method Summary |
|
Interface FactoryBean<T>
2021年3月7日
21:59
Info |
| |||||||||||||||
Fields |
| |||||||||||||||
Constructor |
| |||||||||||||||
Method Summary |
|
Interface InstantiationAwareBeanPostProcessor
2021年3月10日
19:34
Info |
| ||||||||
Fields |
| ||||||||
Constructor |
| ||||||||
Method Summary |
|
Interface BeanPostProcessor
2021年3月10日
19:36
Info |
| ||||||
Fields |
| ||||||
Constructor |
| ||||||
Method Summary |
|
原文:https://www.cnblogs.com/huz-han/p/14738795.html