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 (卖房)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/610215.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

每日OJ题_记忆化搜索②_力扣62. 不同路径(三种解法)

目录 力扣62. 不同路径 解析代码1_暴搜递归(超时) 解析代码2_记忆化搜索 解析代码3_动态规划 力扣62. 不同路径 62. 不同路径 难度 中等 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器…

element-ui skeleton 组件源码分享

今日简单分享 skeleton 骨架屏组件源码,主要从以下四个方面来讲解: 1、skeleton 组件的页面结构 2、skeleton 组件的属性 3、skeleton item 组件的属性 4、skeleton 组件的 slot 一、skeleton 组件的页面结构 二、skeleton 组件的属性 2.1 animate…

BS架构 数据权限--字段级权限 设计与实现

一、需求场景 1. 销售发货场景 销售出库单上 有 商品名称、发货数量、单价、总金额 等信息。 销售人员 关注 上述所有信息,但 仓管人员 不需要知道 单价、总金额 信息。 2. 配方、工艺保密 场景 配方研发人员 掌握核心配方, 但 交给车间打样、生产时…

一款免费的PDF转换工具分享

最近在吾爱上发现一款PDF免费转换工具,支持多种格式转换,试了一下,还不错 最重要的是免费,不用开会员转换,也没有限制(文末有工具地址) ps:转换完成后看一下是否符合,可能会有些许…

即插即用模块:Convolutional Triplet注意力模块(论文+代码)

目录 一、摘要 二、创新点总结 三、代码详解 论文:https://arxiv.org/pdf/2010.03045v2 代码:https://github. com/LandskapeAI/triplet-attention 一、摘要 由于注意机制具有在通道或空间位置之间建立相互依赖关系的能力,近年来在各种计…

Web功能测试之表单、搜索测试

初入职场接触功能测试老是碰到以下情况不知道怎么写测试用例: 一个界面很多搜索条件怎么写用例? 下拉框测试如何考虑测试点? 上传要考虑哪些验证点?...... 所以这篇主要是整理关于web测试之表单、搜索测试的相关要点。 一、表…

小程序(三)

十三、自定义组件 (二)数据方法声明位置 在js文件中 A、数据声明位置:data中 B、方法声明位置methods中,这点和普通页面不同! Component({/*** 组件的属性列表*/properties: {},/*** 组件的初始数据*/data: {isCh…

离线使用evaluate

一、目录 步骤demorouge-n 含义 二、实现 步骤 离线使用evaluate: 1. 下载evaluate 文件:https://github.com/huggingface/evaluate/tree/main2. 离线使用 路径/evaluate-main/metrics/rougedemo import evaluate离线使用evaluate: 1. 下载evaluate 文件&…

# 从浅入深 学习 SpringCloud 微服务架构(十五)

从浅入深 学习 SpringCloud 微服务架构(十五) 一、SpringCloudStream 的概述 在实际的企业开发中,消息中间件是至关重要的组件之一。消息中间件主要解决应用解耦,异步消息,流量削锋等问题,实现高性能&…

Java中使用RediSearch进行高效数据检索

RediSearch是一款构建在Redis上的搜索引擎,它为Redis数据库提供了全文搜索、排序、过滤和聚合等高级查询功能。通过RediSearch,开发者能够在Redis中实现复杂的数据搜索需求,而无需依赖外部搜索引擎。本文将介绍如何在Java应用中集成并使用Red…

3. 多层感知机算法和异或门的 Python 实现

前面介绍过感知机算法和一些简单的 Python 实践,这些都是单层实现,感知机还可以通过叠加层来构建多层感知机。 2. 感知机算法和简单 Python 实现-CSDN博客 1. 多层感知机介绍 单层感知机只能表示线性空间,多层感知机就可以表示非线性空间。…

切割链表 问题的讲解和实现(带哨兵位)

一:题目 二:思路讲解 先 将小于x的放进一个新的链表,将≥x的也放进另一个新链表。 然后 第一个新链表的尾节点的next链接到第二个新链表的哨兵节点的next,因为本身不存在哨兵位。 最后 链接完成后的链表的最后一个节点的next一…

python数据分析——数据的选择和运算

数据的选择和运算 前言一、数据选择NumPy的数据选择一维数组元素提取示例 多维数组行列选择、区域选择示例 花式索引与布尔值索引布尔索引示例一示例二 花式索引示例一示例二 Pandas数据选择Series数据获取DataFrame数据获取列索引取值示例一示例二 取行方式示例loc() 方法示例…

天地图2024版正式启用!首次开放多时相影像专题,可直接查看历史影像

近日,国家基础地理信息中心正式发布了天地图2024版。 新版本更新2米分辨率遥感影像794万平方公里、优于1米分辨率遥感影像655万平方公里,在线服务2米分辨率遥感影像覆盖全部陆地国土、优于1米遥感影像覆盖陆地国土达到98%,同时新增多时相遥感…

航空科技:探索飞机引擎可视化技术的新视界

随着航空技术的飞速发展,飞机引擎作为航空器最为关键的部件之一,其性能直接影响到飞机的安全性、经济性和环保性。因此,飞机引擎可视化技术的应用日益成为航空行业研究和发展的热点。 通过图扑将复杂的飞机引擎结构和工作原理以直观、生动的…

Linux中的日志系统简介

在的Linux系统上使用的日志系统一般为rsyslogd。rsyslogd守护进程既能接收用户进程输出的日志,又能接收内核日志。用户进程是通过调用syslog函数生成系统日志的。该函数将日志输出到一个UNIX本地域socket类型(AF_UNIX)的文件/dev/log中&#…

动联再掀创新风潮!P92 Max智能POS机惊艳发布

当下,智能支付与零售行业正经历着深刻变革,移动支付、无人支付等新型支付方式在我国广泛应用,显著优化了消费者的支付体验,同时也为零售行业带来新的发展契机。动联,凭借其在身份认证领域的深厚技术底蕴与创新精神&…

CRM客户关系管理系统源码部署/售后更新/搭建上线维护

基于ThinkPHPFastAdmin开发的CRM客户关系管理系统,专门为企业销售团队量身定制的工具,它能够有效地管理跟进客户,提高销售业绩!提供无加密源代码,可以自行根据不同企业的需求进行开发定制。Uniapp版本(高级授权)支持编…

微服务保护-学习笔记

微服务保护 1 Sentinel入门1.1 雪崩问题1.1.1 什么是雪崩问题1.1.2 如何解决雪崩设置超时时间仓壁模式熔断降级限流(预防措施) 1.2 服务保护技术对比1.3 Sentinel介绍与安装Sentinel 特征Sentinel 安装 1.4 Sentinel整合微服务 2 流量控制3 熔断隔离和降…

【通信协议解析】WiFi协议解析

WiFi协议解析 一、发展由来 Wi-Fi,又称“无线网络”,是Wi-Fi联盟的商标,一个基于IEEE 802.11标准的无线局域网技术。“Wi-Fi”常写作“WiFi”或“Wifi”,但是这些写法并没有被Wi-Fi联盟认可。Wi-Fi产品经由Wi-Fi联盟的一家独立授…