文章目录
- 一.Bean的生命周期
- 1.Bean的作用域
- 2.设置Bean的作用域
- 3.Spring的执行流程
- 4.Bean的生命周期
一.Bean的生命周期
1.Bean的作用域
Bean的作用域指的是Bean在Spring容器中的某种行为模式,默认是singleton(单例模式),一共分为6种,后四种用于spring mvc中有用
- singleton:单例模式,Spring默认的作用域。在每个Spring应用中,每个Bean定义只会创建一个实例。
- prototype:原型模式,每次从容器中获取的时候,都会产生一个新对象。
- request:请求作用域,Web应用中的HTTP请求。对于每次HTTP请求,Spring会创建一个新的Bean。该作用域只适用于Web应用
- session:会话作用域,Web应用中的HTTP会话。在同一个会话期间,Spring会创建一个新的Bean。该作用域也只适用于Web应用
- application:全局作用域,Web应用中的整个应用(即整个ServletContext)。在同一个应用中,Spring只会创建一个Bean。该作用域也只适用于Web应用。
- websocket:WebSocket作用域,用于WebSocket相关的操作。
注意:除singleton和prototype外,其余的4种作用域都只适用于Web应用。此外,不同的作用域对应了不同的Bean生命周期方法,如preInitialize和preDestroy等。
2.设置Bean的作用域
使⽤ @Scope 标签就可以⽤来声明 Bean 的作⽤域
列如:
@Component
public class Users {
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Bean(name = "u1")
public User user1() {
User user = new User();
user.setId(1);
user.setName("张三");
return user;
}
}
3.Spring的执行流程
简单概括为:Bean 执⾏流程(Spring 执⾏流程):启动 Spring 容器 -> 实例化 Bean(分配内存空间,从⽆到
有) -> Bean 注册到 Spring 中(存操作) -> 将 Bean 装配到需要的类中(取操作)。
4.Bean的生命周期
Bean的生命周期可以大致分为5部分
- 1.实例化Bean(为Bean分配空间)
- 2.设置属性(将当前依赖的Bean进行注入和装配)
- 3.初始化
- 实现了各种 Aware 通知的⽅法,如 BeanNameAware、BeanFactoryAware、
ApplicationContextAware 的接⼝⽅法;
执⾏ BeanPostProcessor 初始化前置⽅法;
执⾏ @PostConstruct 初始化⽅法,依赖注⼊操作之后被执⾏;
执⾏⾃⼰指定的 init-method ⽅法(如果有指定的话);
执⾏ BeanPostProcessor 初始化后置⽅法
- 实现了各种 Aware 通知的⽅法,如 BeanNameAware、BeanFactoryAware、
- 4.使用Bean
- 5.销毁Bean