一、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生命周期全过程
创建前→准备阶段→创建实例阶段→依赖注入阶段→容器缓存阶段→销毁实例阶段
创建前
主要是在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环境