Spring01 - IOC

IOC( Inversion of Control):控制反转
  • Spring Core 最核心的部分
  • 依赖注入( Dependency Inversion )
依赖注入的方式
  • Set注入:Setter
  • 接口注入:Interface
  • 构造函数:Constructor
  • 注解:Annotation
    在这里插入图片描述
优势
  • 避免在各处使用new来创建类,并且可以做到统一维护
  • 创建实例的时候不需要了解其中的细节
    在这里插入图片描述
应用
流程
  • 读取Bean配置信息
  • 根据Bean注册表实例化Bean
  • 将Bean实例放到Spring容器中
    在这里插入图片描述
支持的功能
  • 依赖注入
  • 依赖检查
  • 自动装配
  • 支持集合
  • 指定初始化
核心接口
  • BeanFactory:顶级容器接口
  • ApplicationContext
BeanDefinitionRegistry

   提供向IOC容器注册BeanDefinition对象的方法

BeanFactory:Spring框架最核心的接口
  • 提供IOC的配置
  • 包含Bean的各种定义,便于实例化Bean
  • 建立Bean之间的依赖关系
  • Bean生命周期的控制
BeanFactory体系结构

在这里插入图片描述

  • BeanFactory:顶级容器接口
  • ListableBeanFactory:定义了访问容器中Bean基本信息的若干方法。如:查看Bean的个数,获取某一类型Bean的配置名,查看容器中是否包含某一Bean
  • HierarchicalBeanFactory:父子集联IOC容器接口,子容器可以通过方法访问父容器,父容器不能访问子容器Bean,例:MVC中展现层的Bean位于一个子容器中,而业务层、持久层的Bean位于父容器,展现层可以引用业务层、持久层的Bean,业务层看不到展现层的Bean
  • ConfigurableBeanFactory:增强了IOC容器的可定制性,定义了设置类型装载器,属性编辑器,属性初始化后置处理器
  • AutoWireCapableBeanFactory:定义了容器中的Bean按某种规则,如按名称,类型等自动装配
  • SingletonBeanRegistry:允许在运行期间向容器注册Singleton实例Bean的方法
BeanFactory与ApplicationContext的比较
  • BeanFactory是Spring框架的基础设施,面向Spring
  • ApplicationContext面向使用Spring框架的开发者
ApplicationContext的功能( 继承多个接口 )
  • BeanFactory:能够管理、装配Bean
  • ResourcePatternResolver:能够加载资源文件
  • MessageSource:能够实现国际化等功能
  • ApplicationEventPublisher:能够注册监听器,实现监听机制

IOC的getBean方法
  • 转换BeanName
  • 从缓存中加载实例
  • 实例化Bean
  • 检测parentBeanFactory
  • 初始化依赖的Bean
  • 创建Bean
Spring Bean的作用域
  • singleton:Spring的默认作用域,容器里拥有一个唯一的Bean实例
  • prototype:针对每一个getBean请求,容器都会创建一个Bean实例
  • request:会为每个Http请求创建一个Bean实例
  • session:会为每个session创建一个Bean实例
  • globalSession:会为每个全局Http Session创建一个Bean实例,对该作用域仅对Portlet有效
创建过程
  • 实例化Bean
  • Aware(注入Bean ID、BeanFactory和AppCtx)
  • BeanPostProcessor(s).postProcessBeforeInitialization
  • InitializingBean(s).afterPropertiesSet
  • 定制的Bean init方法
  • BeanPostProcessor(s).postProcessAfterInitialization
  • Bean初始化完毕
销毁过程
  • 若实现了DisposableBean接口,则会调用destroy方法
  • 若配置了destry-method属性,则会调用其配置的销毁方法
显示装配Bean,返回Bean实例

在这里插入图片描述

Main中获取:

在这里插入图片描述

装配Bena:@Value设置默认值

在这里插入图片描述

默认扫描:当前package和子package

在这里插入图片描述

多个可以是使用:@Primary

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值