Spring原理(Bean的生命周期)

一、Bean的作用域

Bean 的作⽤域是指 Bean 在 Spring 框架中的某种⾏为模式。
⽐如单例作⽤域: 表⽰ Bean 在整个 Spring 中只有⼀份, 它是全局共享的. 那么当其他⼈修改了这个值之后, 那么另⼀个⼈读取到的就是被修改的值

|-------------|-----------------------------------------|
| 作用域 | 说明 |
| singleton | 每个SpringIoc容器内同名称的Bean只有一个实例(单例)默认 |
| prototype | 每次使用该bean时会创建新的实例(非单例) |
| request | 每个HTTP请求生命周期内,创建新的实例(Web环境中,了解) |
| session | 每个HTTP Session生命周期内,创建新的实例(Web环境中,了解) |
| application | 每个ServletContext生命周期内,创建新的实例(Web环境中,了解) |
| websocket | 每个WebSocket生命周期内,创建新的实例(Web环境中,了解) |

一个ServletContext可以包含多个ApplicationContext,但是一般就只启动一个ApplicationContext

二、Bean的生命周期

Bean的生命周期可以分为以下5个部分:

1.实例化(为Bean分配内存空间)

2.属性赋值(Bean的注入和装配,比如@Autowired)

3.初始化

a.执行各种通知,如:BeanNameAware,BeanFactoryAware,ApplicationContextAware的接口方法

b.执行初始化方法

xml定义init-method

使用注解的方式@PostConstruct

执行初始化后置方法(@BeanPostProcessor)

4.使用Bean

5.销毁Bean

a.销毁容器的各种方法,如@PreDestory,DisposableBean接口方法,destroy-method

复制代码
@Component
public class BeanLifeComponent implements BeanNameAware {

    private Dog singletonDog;

    public BeanLifeComponent() {
        System.out.println("执行构造方法");
    }


    @Override
    public void setBeanName(String name) {
        System.out.println("执行通知BeanNameAware, name:" + name);
    }

    @PostConstruct  //初始化方法
    public void init() {
        System.out.println("执行初始化方法");
    }

    public void use() {
        System.out.println("执行use方法");
    }

    @PreDestroy
    public void destory() {
        System.out.println("执行销毁方法");
    }
}
相关推荐
泡海椒19 分钟前
PDF 表格样式优化:jquick-pdf 边框、圆角、背景色
java·开发语言·pdf
Nicander1 小时前
我给 Excalidraw 做了一个本地工作区:DrawSpace
前端·开源
景熙55232 小时前
15.Java 8 Stream 流入门到实战
java·开发语言·数据结构
wno7042 小时前
Spring Security权限控制
java·python·spring
杨运交3 小时前
[071][验证码模块]基于Spring拦截器的验证码认证设计思想
java·后端·spring
Geek-Chow3 小时前
CountDownLatch in Java
java
linux_cfan3 小时前
17 · 引擎适配器全景:HLS/DASH/Vimeo/Mux/Cast
前端·javascript·音视频
SL_staff3 小时前
从RBAC到场景化授权:《无忧·企业文档》三级权限模型的技术实践解析
java·开源·产品
计算机魔术师3 小时前
烧掉2780亿美元还不够?OpenAI的资本豪赌让人头皮发麻
前端
传奇开心果编程4 小时前
【springboot基础语法学与练】第 1 课:从零开始
java·spring boot·后端·学习