当前位置: 首页>后端>正文

面试题-springbean相关

一、springbean定义

1.bean是一个对象,一个或者多个不限定
2.bean被托管在spring的ioc容器中
3.程序是由一个一个的bean组成的

1、定义springbean的方式有哪些

1.基于xml的方式进行配置
①bean的实现来自第三方类库,比如datasource
②需要定义命名空间的配置,如context、aop、mvc等
2.基于注解扫描的方式配置
在开发中使用的controller、service、repository、mapper、component
3.基于java类的配置
①java类添加@configuration注解
②方法上添加@bean
③通过annotationConfigApplicationContext或者子类启动spring容器


面试题-springbean相关,第1张
springbean创建策略示意图.png

二、springbean生命周期全过程

创建前→准备阶段→创建实例阶段→依赖注入阶段→容器缓存阶段→销毁实例阶段

创建前

主要是在spring加载之前从spring的上下文获取相关的配置并解析找到bean有关的配置内容,比如init-method方法容器在初始化bean时会调用,destory-method方法容器在销毁bean时会调用

准备阶段

通过反射创建bean的实例对象扫描和解析bean的属性

依赖注入阶段

检测被实例化的bean是否存在其他依赖,如果存在其他依赖,需要将这些依赖注入到bean中作为属性,比如哦通过@Autoware、@Setter

容器缓存阶段

把bean放入ioc容器中缓存起来,常见的init-method会在这个阶段被调用

销毁实例阶段

完成spring上下文关闭的时候将销毁所有的bean,会调用destory-method方法

三、spring bean的作用域之间有什么区别

singleton 在Sring IOC容器中仅存在一个Bean实例,Bean以单例方式存在,默认值

prototype 每次从容器中调用Bean时,都会返回一个新的实例,即每次调用getBean()时,相当于执行new XxxBean()

request 每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境

session 同一个HTTP Session共享一个Bean,不同Session使用不同Bean,仅适用于WebApplicationContext环境

globalSession 一般用于Portlet应用环境,该作用域仅适用于WebApplicationContext环境


https://www.xamrdz.com/backend/3g21945717.html

相关文章: