返回顶部
首页 > 资讯 > 后端开发 > Python >浅谈springBean的作用域
  • 639
分享到

浅谈springBean的作用域

springBean 作用域 2023-02-05 15:02:26 639人浏览 薄情痞子

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

摘要

目录bean的作用域具体实现代码分析前言:最近在进行springBean的作用域学习,并且学习了对应的例子。这里进行一下总结 一:Bean的作用域基础概念 如果想学习SpringBe

前言:最近在进行springBean的作用域学习,并且学习了对应的例子。这里进行一下总结 一:Bean的作用域基础概念

如果想学习SpringBean的生命周期,那么就必须要学习Bean的作用域。因为不同的作用域的bean的生命周期不同

1:singleton(唯一bean实例,由Spring容器管理其生命周期)
2:prototype(原型bean,创建后容器不管理其生命周期)
3:request(每次Http都产生新的bean,仅在http request内有效)
4:session(首次http请求创建一个实例,作用域是浏览器首次访问直至浏览器关闭)
5:global-session(全局 session 作用域,仅仅在基于 Portlet 的 WEB 应用中才有意义,Spring5 已经没有了。

  • singleton 是默认的作用域,我们如果不对bean的scope配置项进行配置的话,默认就是Singleton类型。 在创建起容器时就同时自动创建了一个 bean 的对象,不管你是否使用,他都存在了,每次获取到的对象都是同一个对象。
  • prototype: 原型bean,每次对此类型的bean进行请求的时候,都会创建一个新的bean实例。与我们 java中的new效果类似。Spring 只负责创建,当容器创建了 Bean 的实例后,Bean 的实例就交给客户端代码管理,Spring 容器将不再跟踪其生命周期。
  • request:每次HTTP请求都会创建一个新的Bean
  • session:首次http请求创建一个实例,作用域是浏览器首次访问直至浏览器关闭
  • global-session:作用域范围是WebApplicationContext中。一般用于Portlet应用环境,该运用域仅适用于WebApplicationContext环境。

后三种只有在web环境下才有效。

bean的作用域具体实现

我针对对前两种作用域编写了一个对应的例子,这是一个普通的Maven项目,引进了spring的包。首先看一下项目结构

1.空的AService类


@Component
//@Scope("prototype")
public class AService {

}

xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!--开启注解的支持-->
    <context:annotation-config/>
    <!-- 自动扫描指定包及其子包下的所有Bean类 -->
    <context:component-scan base-package="com.tfjy.test"/>

    <!--    将AService设置为原型bean-->
<!--    <bean id="AService" class="com.tfjy.test.AService" scope="prototype"></bean>-->

</beans>

Test测试


public class Test {
    //bean验证
    @org.junit.Test
    public void beanTest(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");

        AService aServiceOne = context.getBean("AService",AService.class);
        AService aServiceTwo = context.getBean("AService",AService.class);

        System.out.println(aServiceOne);
        System.out.println(aServiceTwo);
        //通过equals方法判断两个对象是否相等
        if(aServiceOne.equals(aServiceTwo)){
            System.out.println("两次getBean方法,获得了同一个单例对象");
        }else{
            System.out.println("两次getBean方法,获得的不是同一个单例对象");
        }
    }
}

4.pom文件引入的依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.15.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

代码分析

上述代码中直接运行的话,是没有配置bean的作用域的。所以控制台会打印,两次getBean方法,获得了同一个单例对象

我们设置bean对象为prototype类型的方式也有两种。
1.注解方式。
在需要交由ioc容器管理的bean对象类上面添加@Scope(“prototype”)注解。
2.xml配置文件方式

<bean id="AService" class="com.tfjy.test.AService" scope="prototype"></bean>

这两种方式设置任意一种,spring加载bean的时候都会去读取配置,并将对应bean设置为prototype类型。

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

--结束END--

本文标题: 浅谈springBean的作用域

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

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

猜你喜欢
  • 浅谈springBean的作用域
    目录bean的作用域具体实现代码分析前言:最近在进行springBean的作用域学习,并且学习了对应的例子。这里进行一下总结 一:Bean的作用域基础概念 如果想学习SpringBe...
    99+
    2023-02-05
    springBean 作用域
  • 浅谈JavaScript作用域
    目录一、作用域1、全局作用域2、局部作用域二、变量的作用域1、全局变量2、局部变量3、全局变量和局部变量的区别三、作用域链一、作用域 通常来说,一段程序代码中所用到的名字并不总是有效...
    99+
    2024-04-02
  • 浅谈Nodejs中的作用域问题
    在JS中有全局作用域和函数作用域,而在Nodejs中也自己的作用域,分为全局作用域(global)和模块作用域。 js作用域: 以前学js的时候我们的全局对象是window,如: var a = 10;...
    99+
    2022-06-04
    浅谈 作用 Nodejs
  • SpringBean作用域有什么用
    本篇内容介绍了“SpringBean作用域有什么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!singleton:单例模式,在整个Spri...
    99+
    2023-06-04
  • springBean的作用域怎么实现
    本篇内容主要讲解“springBean的作用域怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springBean的作用域怎么实现”吧!如果想学习SpringBean的生命周期,那么就必须...
    99+
    2023-07-05
  • 浅谈python函数之作用域(python3.5)
    1 基本概念 1.1 命名空间 (namespace) 命名空间是变量名到对象的映射(name -> obj)。目前大多数的命名空间以类似于python字典的形式实现,实现形式在未来可能发生变化。命名...
    99+
    2022-06-05
    浅谈 函数 作用
  • 最全总结SpringBean的作用域管理
    目录一、前言1.1 详细介绍下 singleton 作用域?1.2 和单例模式有何联系去区别呢?1.3 Prototype作用域二、bean的作用域三、singleton —— 唯一...
    99+
    2024-04-02
  • 浅谈shell循环中变量的作用域问题
    最近实现了一个shell脚本,功能简单来说就是从文件中按行读取然后将所有行拼接成一行写入一个文件,关键代码如下 path_all="" cat $1 | while read line do if [ "$path...
    99+
    2022-06-04
    shell 变量 作用域
  • Java之SpringBean作用域和生命周期
    目录Bean 作用域和生命周期Bean 作用域Bean 作用域分类singletonprototyperequestsessionBean 作用域的设置Spring 执行流程Bean...
    99+
    2023-05-14
    Java SpringBean作用域和生命周期 SpringBean作用域 SpringBean生命周期
  • 使用SpringBean怎么实现作用域管理
    这篇文章给大家介绍使用SpringBean怎么实现作用域管理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、前言创建 BeanDefinition 时,就等于创建了一个配方,用于创建由 BeanDefinition ...
    99+
    2023-06-15
  • 浅谈swoole的作用与原理
    目录PHP 中的 Node ?Swoole 到底是什么?如何让它运行?使用 Docker 运行 SwooleSwoole 可以做什么?基于 Swoole 实现 HTTP 服务HTTP...
    99+
    2024-04-02
  • 浅谈java监听器的作用
    监听器是JAVA Web开发中很重要的内容,其中涉及到的知识,可以参考下面导图:Web监听器1 什么是web监听器?web监听器是一种Servlet中的特殊的类,它们能帮助开发者监听web中的特定事件,比如ServletContext,Ht...
    99+
    2023-05-31
    java 监听器
  • SpringBean作用域与生命周期深入讲解
    目录1.作用域定义Bean 的作用域Bean 的 6 种作用域单例作用域(singleton)和全局作用域(application)区别2.设置作用域3.Bean 原理分析3.1 B...
    99+
    2024-04-02
  • 一文搞懂SpringBean中的作用域和生命周期
    目录一、Spring Bean 作用域singleton(单例)prototype(原型)小结二、Spring Bean生命周期如何关闭容器生命周期回调通过接口设置生命周期通过xml...
    99+
    2024-04-02
  • 浅谈DNS域名解析的过程
    用户在浏览器输入www.baidu.com时,DNS域名解析大致分为以下几个过程: 浏览器客户端检查自身有没有该域名的缓存: 如果浏览器有命中,直接返回该域名对应的IP地址,解析结束; ...
    99+
    2023-09-17
    服务器 网络 前端
  • 浅谈Springrefresh的工作流程
    目录功能分类具体步骤1. prepareRefresh2. obtainFreshBeanFactory3. prepareBeanFactory4. postProcessBean...
    99+
    2023-05-17
    Spring refresh refresh工作流程
  • 浅谈Vue3 defineComponent有什么作用
    目录defineComponent重载函数开发实践defineComponent函数,只是对setup函数进行封装,返回options的对象; export function d...
    99+
    2024-04-02
  • 浅谈Vue3中key的作用和工作原理
    这个key属性有什么作用呢?我们先来看一下官方的解释: kekey属性主要用在Vue的虚拟DOM diff算法中,在新旧nodes对比时辨识Vnodes; 如果不使...
    99+
    2024-04-02
  • 浅谈Redis在秒杀场景的作用
    目录1 秒杀负载特征1.1 瞬时并发访问量很高1.2 读多写少2 秒杀阶段2.1 秒杀前2.2 秒杀中2.3 秒杀结束后3 Redis可支撑秒杀的特性3.1 支持高并发3.2 保证库存查验和库存扣减的原子性4 基于原子操...
    99+
    2023-01-28
    Redis秒杀
  • 浅谈replaceAll的用法
    replaceAll是一个字符串的方法,用于替换字符串中的指定字符或字符序列。它的用法如下:1. replaceAll(String...
    99+
    2023-09-09
    replaceAll
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作