首页 > 其他分享 >面经-框架-Spring Bean生命周期

面经-框架-Spring Bean生命周期

时间:2022-08-30 10:22:13浏览次数:41  
标签:缓存 Spring 面经 bean Bean 销毁 单例 创建

Spring Bean生命周期

1.处理名称,检查缓存

一级缓存:放单例成品对象;二级缓存:放单例工厂的产品;三级缓存:放单例工厂。

2.检查父工厂

如果父子容器名称重复,优先子容器bean。

3.检查DependsOn

有依赖关系的bean创建次序有保障。无依赖关系时,A dependsOn B,则B先创建。

4.按Scope创建Bean

创建单例,去单例池获取bean,有则返回,无则进入创建流程。

创建多例,进入创建流程。从不缓存bean,直接创建新的。

创建自定义scope,例如request,到request域获取bean,有则返回,无则进入创建流程。

5.创建Bean

创建Bean实例 1.加@Autowired注入bean实例 2.有唯一的带参构造 3.默认构造(暴力反射把私有设为true)

依赖注入 注解匹配、根据名字/类型匹配、精确指定(优先级:精确>名字/类型>注解匹配)

初始化 方式:Aware接口、@PostConstruct、接口回调、@Bean、创建aop代理。

登记可销毁bean 实现AutoCloseable接口/自定义destroyMethod/提供close方法/@PreDestroy,即可记录下来,存储在bean工厂的成员变量中。多例scope不会存储。

6.类型转换

7.销毁bean

销毁时机:

单例bean:close时会逐一销毁。

多例bean:手动调用destroyBean销毁

自定义bean:作用域对象生命周期结束时。



 

标签:缓存,Spring,面经,bean,Bean,销毁,单例,创建
From: https://www.cnblogs.com/lysboke/p/16638396.html

相关文章

  • 如何在springBoot中进行ReactiveFeignClient超时配置
    最近项目中用到了ReactiveFeign请求第三方的http接口,需要自定义一个请求超时时间,但在网上查了很多资料都没有一个比较准确的配置方法。pom依赖<dependency><groupId>......
  • springboot加载静态资源
      第一步写一个config的类继承,WebMvcConfigurationSupport   重写这个方法/**是指这个后面的路径都可以加载另一个配置类加载web:resources:static-lo......
  • Spring Boot:上传文件大小超限制如何捕获 MaxUploadSizeExceededException 异常
    (7条消息)SpringBoot:上传文件大小超限制如何捕获MaxUploadSizeExceededException异常_ifu25的博客-CSDN博客......
  • Spring学习笔记(四)——Spring Beans自动装配
    1.自动装配简介你已经学会如何使用<bean>元素来声明bean和通过使用XML配置文件中的<constructor-arg>和<property>元素来注入。Spring容器可以在不使用<constructo......
  • Spring MVC组件之HandlerAdapter
    SpringMVC组件之HandlerAdapterHandlerAdapter概述HandlerAdapter组件是一个处理器Handler的适配器。HandlerAdapter组件的主要作用是适配特定的Handler来处理相应的请......
  • Spring的自动化装配
      在Spring中,对象无需自己查找和创建与其所关联的其他对象。相反,容易负责把需要相互协作的对象引用赋予各个对象。例如,一个订单管理的组件需要信用卡认证组件,但它不需要......
  • SpringBoot整合EMQ
    1.引入依赖<dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId><version>1.2.5</version></depe......
  • Spring Boot集成Mybatis
    集成Mybatis1、导入依赖<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><......
  • JavaWeb--JavaBean与三层架构
    前言JavaWeb其实就是一个技术的总和,把Web看成一个容器而已主要使用JavaEE技术来实现.在加上各种中间件。整个javaWeb阶段的内容通过实际的案例贯穿学习,所涉及到的技......
  • springboot1
    1.5.5常用的监控终端在百度搜索“springbootactuator”即可找到如下表格。第2章SpringBoot重要用法2.1自定义异常页面对于404、405、500等异常状态,服务器......