限定程序中变量的可用范围叫做作用域,或者说在源代码中定义变量的某个区域就叫做作用域
后4种状态是Spring MVC中的值,在普通的Spring项目中只有前两种
singleton——单例作用域
request——请求作用域
session——回话作用域
application:全局作用域
websocket——HHTP WebSocket作用域
单例作用域(singleton)VS 全局作用域(application)
Bean 执⾏流程(Spring 执⾏流程):启动 Spring 容器 -> 实例化 Bean(分配内存空间,从⽆到有) -> Bean 注册到 Spring 中(存操作) -> 将 Bean 装配到需要的类中(取操作)。
Bean 的⽣命周期分为以下 5 ⼤部分:
1.实例化 Bean(为 Bean 分配内存空间)
2.设置属性(Bean 注⼊和装配)
3.Bean 初始化
1、执行各种通知(各种Aware)
比如:
Spring在初始化 bean,是需要给 bean 赋予 id(name)。
而设置 beanName 成功的话,就会生成一个 beadNameAware 通知。
2、执行初始化的前置方法
前提:我们重新 前置方法,不然它按照源码来操作。
3、执行构造方法,两种执行方式。
3.1、执行具有 @PostConstruct 注解的方法。【PostConstruct -> 初始化方法】
3.2、执行 init-method 方法,是 Spring 中 配置文件里面 的 bean 标签所有具有的属性。
这个 两个执行方法,是两个不同时期的产物。@PostConstruct,是一种通过 注解 来初始化的方法。init-method,是 xml 时代 的 初始化方法。但是!它们描述的都是同一件事情 “ 初始化 ”。
它们两个执行的优先级:
这么说吧:如果 两种方法,同时存在。
先执行 @PostConstruct 注解的方法,然后执行 init-method 方法。
原因更简单,我们是使用的是高版本的版本,过去的东西终究会被淘汰!
4、执行初始化的后置方法
4.使⽤ Bean
5.销毁 Bean
销毁容器的各种方法,如 @PreDestroy,DisposableBean 接⼝⽅法,destroy-method
【 PS1:@PreDestroy 和 destroy-method 之间的关系,与 @PostConstruct 和 init-method 之间的关系,是一样的。】
【PS2:如果重写了 DisposableBean 接口方法,就会执行销毁 Bean】
【PS3:优先级:@PreDestroy > DisposableBean > destroy-method】
执⾏流程如下图所示:
好啦,本期结束啦,下期见~