Bean的作用域

Bean的作用域

Bean的作用域是指在Spring整个框架中的某种行为模式,比如singleton单例作用域,就表示Bean在整个spring中只有一份,它是全局共享的,那么当其他人修改了这个值时,那么另一个人读取到的就是被修改的值

Bean的六种作用域

  • 单例(Singleton):这是Spring的默认作用域。当一个bean的作用域被设置为单例时,Spring容器中只会存在一个共享的bean实例。对于所有的请求和引用,Spring容器都会返回同一个bean实例。

  • 原型(Prototype):当一个bean的作用域被设置为原型时,每次请求该bean时,Spring容器都会创建一个新的bean实例。这意味着每次注入或通过Spring容器获取该bean时,都会得到一个全新的实例。

  • 请求(Request):这种作用域的bean是针对每个HTTP请求创建的。每个请求都会创建一个新的bean实例,请求完成后,该bean实例会被销毁。

  • 会话(Session):这种作用域的bean是针对每个HTTP会话创建的。在一个会话中,对于该会话的每个请求,都会使用同一个bean实例。

  • 全局会话(Global Session):这种作用域类似于会话作用域,但是它适用于全局HTTP会话。通常用于Portlet环境。

  1. singleton 单例模式 (默认作用域) 只有一个全局对象。

  2. prototype 原形模式 (多例默认) 每次访问都会创建一个新对象

  3. request 请求作用域 (只能在Spring MVC 中使用) 每次HTTP请求都会创建一个对象

  4. session 会话作用域 (只能在Spring MVC 中使用) 每次session会话使用一个bean对象

  5. application 全局作用域 (只能在Spring MVC 中使用) 一个http servlet context中共享一个对象

  6. websocket HTTP WebSocket 作用域 (只能在Spring MVC 中使用)

单例作用域singleton与全局作用域 application的区别

  • singleton时Spring Core的作用域
  • application是Spring Web中的作用域
  • singleton作用与Ioc容器
  • application作用域Servlet容器

设置作用域

使用@Scope注解设置

设置方法有两种

1.直接写作用域名称

@Repository
public class MxRepository {
//直接写作用域的名称
    @Scope("prototype")
    @Bean
    public User user(){
        User user=new User();
        user.setName("张三");
        user.setID(15);
        return user;
    }
}

2.预定义常量

@Repository
public class MxRepository {
    //是一个预定义的常量
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    @Bean
    public User user(){
        User user=new User();
        user.setName("张三");
        user.setID(15);
        return user;
    }
}

Spring的执行流程

1.启动容器

2.Bean加载 (xml文件中的Bean、配置了加载组件路径下的类的扫描)

3.将Bean对象注册到容器中

4.使用Bean属性

5.Spring销毁

Bean生命周期

1.Bean的实例化 (分配内存空间) (先买房)

2.设置属性(依赖注入DI)(装修)

3.初始化 (买各种家电)

        3.1执行各种通知

        3.2初始化的前置方法 (@postConstruct 如果有指定init-method 就执行init-method)

        3.3初始化方法

        3.4初始化的后置方法

4.使用Bean (入住)

5.销毁Bean (卖房)

相关推荐

  1. Bean作用

    2024-05-13 21:42:03       34 阅读
  2. spring bean作用

    2024-05-13 21:42:03       36 阅读
  3. spring-Bean作用

    2024-05-13 21:42:03       32 阅读
  4. Spring整理-Spring Bean作用

    2024-05-13 21:42:03       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-13 21:42:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-13 21:42:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-13 21:42:03       82 阅读
  4. Python语言-面向对象

    2024-05-13 21:42:03       91 阅读

热门阅读

  1. ts 详细-学习

    2024-05-13 21:42:03       30 阅读
  2. notepad++

    notepad++

    2024-05-13 21:42:03      30 阅读
  3. 存储芯片了解

    2024-05-13 21:42:03       34 阅读
  4. 大模型管理工具:Ollama

    2024-05-13 21:42:03       36 阅读
  5. 软件测试至关重要

    2024-05-13 21:42:03       25 阅读
  6. 做跨境电商如何解决IP独立环境?

    2024-05-13 21:42:03       31 阅读
  7. [HDLBits] Three modules

    2024-05-13 21:42:03       34 阅读
  8. 杂记-记一次前端打包问题解决过程

    2024-05-13 21:42:03       27 阅读
  9. python 关键字(in)

    2024-05-13 21:42:03       30 阅读
  10. Buffer

    2024-05-13 21:42:03       35 阅读
  11. 常见请求方法及状态码分析

    2024-05-13 21:42:03       29 阅读