02--Bean作用域和生命周期

  1. Bean作用域

  • 作用域:限定程序中变量的可⽤范围叫做作⽤域,或者说在源代码中定义变量的某个区域就叫做作⽤域。

  • Bean作用域:Bean在整个Spring框架(项目)中的某种行为模式。

  • lombok使用教程(简化get和set方法):

①在项目中引用lombok

02--Bean作用域和生命周期_第1张图片
02--Bean作用域和生命周期_第2张图片
02--Bean作用域和生命周期_第3张图片

②在idea中安装lombok插件

02--Bean作用域和生命周期_第4张图片

③使用lombok注解(上图右侧的@)

02--Bean作用域和生命周期_第5张图片
  1. Bean的六种作用域

Spring容易在初始化一个Bean的实例时,同时会指定该实例的作用域。

2.1 singleton:单例作用域(默认作用域)

  • 效果:该作用域下的Bean在IoC容器中只存在一个实例:获取Bean及装配Bean都是同一对象。

  • 适用场景:通常无状态的Bean使用该作用域。无状态表示Bean对象的属性状态不需要更新。

2.2 prototype:原型作用域(多例作用域)

  • 效果:每次对该作用域下的Bean的请求都会创建新的实例:获取Bean及装配Bean都是新的对象实例。

  • 适用场景:通常有状态的Bean使用该作用域。

2.3 request:请求作用域(限定SpringMVC中使用)

  • 效果:每次http请求都会创建新的Bean实例,类似于prototype。

  • 使用场景:一次http的请求和响应的共享Bean。

2.4 session:会话作用域(限定SpringMVC中使用)

  • 效果:在一个http session中,定义一个Bean实例。

  • 使用场景:用户会话的共享Bean。例如记录一个用户的登录信息。

2.5 application:全局作用域(限定SpringMVC中使用)

  • 效果:在一个http servlet Context中,定义一个Bean实例。

  • 使用场景:Web应用的上下文信息。例如记录一个应用的共享信息。

2.6 websocket:HTTP WebSocket 作用域(限定SpringMVC中使用)

  • 效果:在一个HTTP WebSocket的生命周期中,定义一个Bean实例。

  • 使用场景:WebSocket的每次会话中,保存了一个Map结构的头信息,将用来包裹客户端消息头。第一次初始化后,直接带WebSocket结束都是同一个Bean。

2.7 单例作用域(singleton)VS全局作用域(application)

  • singleton 是 Spring Core 的作⽤域;application 是 Spring Web 中的作⽤域;

  • singleton作用于IoC的容器;而application作用于Servlet容器。

  1. 设置作用域

  • 使⽤ @Scope 标签就可以⽤来声明 Bean 的作⽤域,⽐如设置 Bean 的作⽤域。

  • @Scope 标签既可以修饰⽅法也可以修饰类,@Scope 有两种设置⽅式:

①直接设置值:@Scope("prototype")

02--Bean作用域和生命周期_第6张图片

②使⽤全局变量设置:@Scope(ConfigurableBean Factory.SCOPE_PROTOTYPE)

02--Bean作用域和生命周期_第7张图片
  1. Spring执行流程

  • 启动流程(启动项目)

  • 读取配置文件,初始化:使用配置文件直接注册Bean;配置Bean根(扫描)路径

  • 将Bean存储到Spring中,通过类注解进行扫描和装配

  • 将Bean从Spring读取出来,装配到相应的类

  1. Bean生命周期

  • 实例化Bean(类似于JVM加载:加载→连接→初始化),为Bean分配存储空间

  • 设置属性(Bean注入和装配)

  • 初始化:

①各种通知,实现了各种Aware通知的方法;

②初始化的前置工作,执行BeanPostProcessor初始化前置方法;

③进行初始化工作,使用注解@PostConstruct初始化或者使用(xml)init-method初始化;

④初始化的后置工作,执行BeanPostProcessor初始化后置方法。

  • 使用Bean

  • 销毁Bean(销毁容器的各种方法,如@PreDestroy、DisposableBean接口方法、destroy-method)

  1. 生命周期演示

1.注解:

02--Bean作用域和生命周期_第8张图片

2.xml配置文件:

3.调用类及执行结果(由于使用两种方法,故出现两个结果):

02--Bean作用域和生命周期_第9张图片

一种方法结果演示,与上述生命周期吻合:

02--Bean作用域和生命周期_第10张图片

你可能感兴趣的:(java-ee,java)