SpringBean
概述
BeanDefinition:主要用来描述Bean的定义
BeanDefinitionRegistry:提供了向IOC容器手动注册BeanDefinition的方法
BeanFactory:Spring框架最核心的接口
- 提供IOC的配置机制
- 包含Bean的各种定义,便于实例化Bean
- 建立Bean之间的依赖关系
- Bean生命周期的控制
BeanFactory与ApplicationContext的比较
- BeanFactory是Spring框架的基础设施,面向Spring
- ApplicationContext面向使用Spring框架的开发者
ApplicationContext的功能(继承多个接口)
- BeanFactory:能够管理、装配Bean
- ResourcePatternResolver:能够加载资源文件
- MessageSource:能够实现国际化等功能
- ApplicationEvenPublisher:能够注册监听器、实现监听机制
装配Bean
1、通过@Configuration+@Bean,生成单独的配置类来对Bean进行配置,注入到容器
2、通过@Component和@Value来对实体类进行配置,直接注入
之后可以通过ApplicationContext的getBean方法加载Bean
配置了@Component的类可以通过@Autowired实现依赖注入
refresh
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有效