Bean的生命周期和执行流程

文章目录

    • 一.Bean的生命周期
      • 1.Bean的作用域
      • 2.设置Bean的作用域
      • 3.Spring的执行流程
      • 4.Bean的生命周期

一.Bean的生命周期

1.Bean的作用域

Bean的作用域指的是Bean在Spring容器中的某种行为模式,默认是singleton(单例模式),一共分为6种,后四种用于spring mvc中有用

  • singleton:单例模式,Spring默认的作用域。在每个Spring应用中,每个Bean定义只会创建一个实例。
  • prototype:原型模式,每次从容器中获取的时候,都会产生一个新对象。
  • request:请求作用域,Web应用中的HTTP请求。对于每次HTTP请求,Spring会创建一个新的Bean。该作用域只适用于Web应用
  • session:会话作用域,Web应用中的HTTP会话。在同一个会话期间,Spring会创建一个新的Bean。该作用域也只适用于Web应用
  • application:全局作用域,Web应用中的整个应用(即整个ServletContext)。在同一个应用中,Spring只会创建一个Bean。该作用域也只适用于Web应用。
  • websocket:WebSocket作用域,用于WebSocket相关的操作。

注意:除singleton和prototype外,其余的4种作用域都只适用于Web应用。此外,不同的作用域对应了不同的Bean生命周期方法,如preInitialize和preDestroy等。

2.设置Bean的作用域

使⽤ @Scope 标签就可以⽤来声明 Bean 的作⽤域
列如:
@Component

public class Users {
 @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
 @Bean(name = "u1")
 public User user1() {
 User user = new User();
 user.setId(1);
 user.setName("张三"); 
 return user;
 }
}

3.Spring的执行流程

简单概括为:Bean 执⾏流程(Spring 执⾏流程):启动 Spring 容器 -> 实例化 Bean(分配内存空间,从⽆到
有) -> Bean 注册到 Spring 中(存操作) -> 将 Bean 装配到需要的类中(取操作)。

4.Bean的生命周期

Bean的生命周期可以大致分为5部分

  • 1.实例化Bean(为Bean分配空间)
  • 2.设置属性(将当前依赖的Bean进行注入和装配)
  • 3.初始化
    • 实现了各种 Aware 通知的⽅法,如 BeanNameAware、BeanFactoryAware、
      ApplicationContextAware 的接⼝⽅法;
      执⾏ BeanPostProcessor 初始化前置⽅法;
      执⾏ @PostConstruct 初始化⽅法,依赖注⼊操作之后被执⾏;
      执⾏⾃⼰指定的 init-method ⽅法(如果有指定的话);
      执⾏ BeanPostProcessor 初始化后置⽅法
  • 4.使用Bean
  • 5.销毁Bean

Bean的生命周期和执行流程_第1张图片

你可能感兴趣的:(Spring,框架,java)