返回顶部
首页 > 资讯 > 后端开发 > Python >Java Bean 作用域及它的几种类型介绍
  • 276
分享到

Java Bean 作用域及它的几种类型介绍

2024-04-02 19:04:59 276人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录前言1.作用域2.作用域分类2.1 singleton2.2 prototype2.3 request2.4 session2.5 application3.作用域设置总结前言

前言

spring 框架作为一个管理 Bean 的 ioc 容器,那么 Bean 自然是 Spring 中的重要资源了,那 Bean 的作用域是什么意思?又有几种类型呢?接下来我们一起来看。

PS:Java 中的公共类可称之为 Bean 或 Java Bean。

1.作用域

Bean 的作用域是指 Bean 在 Spring 整个框架中的某种行为模式。比如 singleton 单例作用域,就表示 Bean 在整个 Spring 中只有一份,它是全局共享的,当有人修改了这个值之后,那么另一个人读取到的就是被修改后的值。 举个例子,比如我们在 Spring 中定义了一个单例的 Bean 对象 user(默认作用域为单例),

具体实现代码如下:

@Component
public class UserBean {
    @Bean
    public User user() {
        User user = new User();
        user.setId(1);
        user.setName("Java"); // 此行为重点:用户名称为 Java
        return user;
    }
}

然后,在 A 类中使用并修改了 user 对象,具体实现代码如下:

@Controller
public class AController {
    @Autowired
    private User user;
    public User getUser() {
        User user = user;
        user.setName("Mysql"); // 此行为重点:将 user 名称修改了
        return user;
    }
}

最后,在 B 类中也使用了 user 对象,具体实现代码如下:

@Controller
public class BController {
    @Autowired
    private User user;
    public User getUser() {
        User user = user;
        return user;
    }
}

此时我们访问 B 对象中的 getUser 方法,就会发现此时的用户名为 A 类中修改的“mysql”,而非原来的“Java”,这就说明 Bean 对象 user 默认就是单例的作用域。如果有任何地方修改了这个单例对象,那么其他类再调用就会得到一个修改后的值。

2.作用域分类

在 Spring 中,Bean 的常见作用域有以下 5 种:

  • singleton:单例作用域;
  • prototype:原型作用域(多例作用域);
  • request:请求作用域;
  • session:会话作用域;
  • application:全局作用域。

注意:后 3 种作用域,只适用于 Spring MVC 框架。

2.1 singleton

  • 官方说明:(Default) Scopes a single bean definition to a single object instance for each Spring IoC container.
  • 描述:该作用域下的 Bean 在 IoC 容器中只存在一个实例:获取 Bean(即通过 applicationContext.getBean等方法获取)及装配 Bean(即通过 @Autowired 注入)都是同一个对象。
  • 场景:通常无状态的 Bean 使用该作用域。无状态表示 Bean 对象的属性状态不需要更新。
  • 备注:Spring 默认选择该作用域。

2.2 prototype

  • 官方说明:Scopes a single bean definition to any number of object instances.
  • 描述:每次对该作用域下的 Bean 的请求都会创建新的实例:获取 Bean(即通过 applicationContext.getBean 等方法获取)及装配 Bean(即通过 @Autowired 注入)都是新的对象实例。
  • 场景:通常有状态的 Bean 使用该作用域。

2.3 request

  • 官方说明:Scopes a single bean definition to the lifecycle of a single Http request. That is, each HTTP request has its own instance of a bean created off the back of a single bean definition. Only valid in the context of a WEB-aware Spring ApplicationContext.
  • 描述:每次 Http 请求会创建新的 Bean 实例,类似于 prototype。
  • 场景:一次 Http 的请求和响应的共享 Bean。
  • 备注:限定 Spring mvc 框架中使用。

2.4 session

  • 官方说明:Scopes a single bean definition to the lifecycle of an HTTP Session. Only valid in the context of a web-aware Spring ApplicationContext.
  • 描述:在一个 Http Session 中,定义一个 Bean 实例。
  • 场景:用户会话的共享 Bean, 比如:记录一个用户的登陆信息。
  • 备注:限定 Spring MVC 框架中使用。

2.5 application

  • 官方说明:Scopes a single bean definition to the lifecycle of a ServletContext. Only valid in the context of a web-aware Spring ApplicationContext.
  • 描述:在一个 Http Servlet Context 中,定义一个 Bean 实例。
  • 场景:Web 应用的上下文信息,比如:记录一个应用的共享信息。
  • 备注:限定 Spring MVC 框架中使用。

3.作用域设置

我们可以通过 @Scope 注解来设置 Bean 的作用域,它的设置方式有以下两种:

  • 直接设置作用域的具体值,如:@Scope("prototype");
  • 设置 ConfigurableBeanFactory 和 WebApplicationContext 提供的 SCOPE_XXX 变量,如 @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)。

具体设置代码如下: 

总结

Bean 的作用域是指 Bean 在 Spring 整个框架中的某种行为模式。Bean 的常见作用域有 5 种:singleton(单例作用域)、prototype(原型作用域)、request(请求作用域)、session(请求作用域)、application(全局作用域),注意后 3 种作用域只适用于 Spring MVC 框架。

到此这篇关于Java Bean 作用域及它的几种类型介绍的文章就介绍到这了,更多相关Java Bean 作用域 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java Bean 作用域及它的几种类型介绍

本文链接: https://lsjlt.com/news/167371.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java Bean 作用域及它的几种类型介绍
    目录前言1.作用域2.作用域分类2.1 singleton2.2 prototype2.3 request2.4 session2.5 application3.作用域设置总结前言 ...
    99+
    2024-04-02
  • java中的几种类介绍
    Date类(1)Date类的概述:表示特定的瞬间表示到毫秒(2)构造方法主要有两种:public Date() public Date(long date) //把一个long类型的毫秒值转换成一个日期对象(3)成员方法:public l...
    99+
    2014-11-24
    java 介绍
  • Python模块的几种类型介绍
    这篇文章主要介绍“Python模块的几种类型介绍”,在日常操作中,相信很多人在Python模块的几种类型介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python模块的几种类型介绍”的疑惑有所帮助!接下来...
    99+
    2023-06-17
  • 简单介绍Python中的几种数据类型
    大体上把Python中的数据类型分为如下几类: Number(数字) 包括int,long,float,complex String(字符串) 例如:hello,"he...
    99+
    2022-06-04
    几种 数据类型 简单
  • Java Spring中Bean的作用域及生命周期
    目录1.Bean的作用域1.1 被修改的Bean案例1.2 为什么使用单例模式作为默认作用域1.3 作用域1.4 Bean的6种作用域1.5 设置作用域2.Spring执行流程和Be...
    99+
    2022-11-13
    Java Spring中Bean的作用域 Spring中Bean的生命周期
  • 详细介绍在pandas中创建category类型数据的几种方法
    在pandas中创建category类型数据的几种方法之详细攻略  T1、直接创建 category类型数据 可知,在category类型数据中,每一个元素的值要么是预设...
    99+
    2024-04-02
  • java泛型类型的调用和实例化介绍
    本篇内容主要讲解“java泛型类型的调用和实例化介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java泛型类型的调用和实例化介绍”吧!1、泛型调用类似于普通方法调用,但你不是把参数传递给方法...
    99+
    2023-06-20
  • C/C++中数据类型转换详解及其作用介绍
    目录概述不同类型数据间的转换隐式类型转换强制类型转换自己声明的类型转换转换构造函数类型转换函数案例应用概述 在日常的开发中, 我们经常会用到数据类型转换, 所以我们要对数据类型转换有...
    99+
    2024-04-02
  • java中异常类型及异常处理的详细介绍
    一、异常实现及分类1.先看下异常类的结构图上图可以简单展示一下异常类实现结构图,当然上图不是所有的异常,用户自己也可以自定义异常实现。上图已经足够帮我们解释和理解异常实现了:java相关免费视频教程:java教学视频所有的异常都是从Thro...
    99+
    2015-02-22
    java入门 java 异常类型 异常处理
  • Vue.js的作用域插槽的介绍以及使用场景
    这篇文章主要介绍“Vue.js的作用域插槽的介绍以及使用场景”,在日常操作中,相信很多人在Vue.js的作用域插槽的介绍以及使用场景问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • java基础之包装类的介绍及使用
    1. 包装类的介绍 针对八种基本数据类型定义相应的引用类型--包装类(封装类),有了类的热点后,就可以调用类中的方法 2. 基本数据类型 --> 包装类:调用包装类的构造器,...
    99+
    2024-04-02
  • MySQL中的数据类型及其应用场景介绍
    MySQL是一种常见的关系型数据库管理系统,广泛应用于各种系统和应用程序中。在MySQL中,数据以不同的数据类型存储在表中。本文将介绍MySQL中常见的数据类型及其应用场景,并附有代码示例。一、整数类型整数类型(INT):用于存储正负整数值...
    99+
    2023-10-22
    适用于表示年龄 数量等整数值) 适用于表示用户名
  • Java类加载器包括几种以及它们之间的关系是怎样的
    这篇文章主要讲解了“ Java类加载器包括几种以及它们之间的关系是怎样的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ Java类加载器包括几种以及它们之间的关系是怎样的”吧! 为什么说Ja...
    99+
    2023-06-02
  • 云服务器有哪几种协议类型的网络设备和功能介绍
    云服务器提供了许多不同类型的网络设备,以满足不同类型的网络需求。以下是云服务器的主要三种协议类型和它们的特点: HTTP/FTP 协议:这个协议提供了一种在互联网上访问其他服务器的方法。它使用了 TCP/IP 网络协议。这个协议是在 2...
    99+
    2023-10-27
    几种 网络设备 协议
  • 关于java中基本数据类型与引用数据类型的介绍
    一、基本数据类型byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0int:整型,用于存储整...
    99+
    2015-04-05
    java入门 java 基本数据类型 引用数据类型
  • C++中对象与类的详解及其作用介绍
    目录什么是对象面向过程 vs 面向对象面向过程面向对象什么是类类的格式类的成员函数函数访问权限方法一方法二方法三inline 成员函数什么是对象 任何事物都是一个对象, 也就是传说中...
    99+
    2024-04-02
  • redis的list数据类型相关命令介绍及使用
    目录list列表简介常用命令添加命令查询命令弹出/删除命令修改命令阻塞弹出命令应用场景list列表简介 list是简单的字符串列表(说通俗点,存储的还是字符串),按照插入顺序排序。你...
    99+
    2024-04-02
  • Oracle中Blob和Clob数据类型的区别及用法介绍
    Oracle数据库中的Blob和Clob数据类型在存储大型数据对象时起着重要作用。Blob用于存储二进制数据,例如图片、音频或视频文件,而Clob用于文本数据,例如长文本、HTML页面...
    99+
    2024-03-08
    - oracle - blob - clob
  • Java中File文件操作类的详细使用介绍
    文章目录 File类的使用File的介绍File常用API判断文件类型-获取文件信息创建文件-删除文件功能遍历文件夹 File类的使用 File的介绍 File的概述: File类在包java.io.Fil...
    99+
    2023-08-21
    java jvm 开发语言
  • Java核心类库String的简单介绍及常用方法
    本篇内容介绍了“Java核心类库String的简单介绍及常用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录一、 简介零碎知识点字符串...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作