3.7 Bean的作用域

2023-05-16

isSingleton方法如果返回true,则Bean在IoC容器中以单例存在,这也是Spring IoC容器的默认值;
如果isPrototype方法返回true,则当我们每次获取Bean的时候,IoC容器都会创建一个新的Bean

在一般的容器中,Bean都会存在单例(Singleton)和原型(Prototype)两种作用域
在Web容器中,则存在页(page)、请求(request)、会话(session)和应用(application)4种作用域。对于页面(page),是针对JSP当前页面的作用域,Spring是无法支持的

定义作用域类

@Component
//@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class ScopeBean {
}

这里将声明作用域的代码注释了,启用默认的作用域,实际就是单例的

测试作用域

public static void main(String[] args) {
    AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
    ScopeBean scopeBean1 = ctx.getBean(ScopeBean.class);
    ScopeBean scopeBean2 = ctx.getBean(ScopeBean.class);
    System.out.println(scopeBean1 == scopeBean2);
}

在这里插入图片描述
如果不加注释,IoC容器在每次获取Bean时,都新建一个Bean的实例返回给调用者,结果false。

这里的ConfigurableBeanFactory只能提供单例(SCOPE_SINGLETON)和原型(SCOPE_PROTOTYPE)两种作用域供选择
如果是在Spring MVC环境中,还可以使用WebApplicationContext去定义其他作用域,如请求(SCOPE_REQUEST)、会话(SCOPE_SESSION)和应用(SCOPE_APPLICATION)。

@Component
@Scope(WebApplicationContext.SCOPE_REQUEST)
public class ScopeBean {
}

这样同一个请求范围内去获取这个Bean的时候,只会共用同一个Bean,第二次请求就会产生新的Bean。因此两个不同的请求将获得不同的实例的Bean。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3.7 Bean的作用域 的相关文章

  • 3.7 Bean的作用域

    isSingleton方法如果返回true xff0c 则Bean在IoC容器中以单例存在 xff0c 这也是Spring IoC容器的默认值 xff1b 如果isPrototype方法返回true xff0c 则当我们每次获取Bean的时
  • spring bean解析源码分析

    转自https www jianshu com p 19e01388ccc5 前言 Spring源码分析是一个系列 xff0c 源码是Spring 4 X xff0c 本系列主要分析Spring的代码执行流程 xff0c 过于细节的内容将不
  • Error creating bean with name ‘mySwaggerResourceProvider‘

    多种情况都会导致此错误的产生 造成原因1 依赖冲突 xff1a 当maven导入项目的依赖A与导入项目的依赖B都依赖于依赖C xff0c 如下图所示 xff0c 都依赖于guava 也就是依赖C xff0c 因为依赖A与依赖B都有依赖C的依
  • Error creating bean with name 'objectMapperConfigurer' defined in class path resource

    转载于 https www cnblogs com qianjinyan p 10879065 html
  • @Configuration注解、@Bean注解以及配置自动扫描、bean作用域

    lt h1 class 61 34 csdn top 34 gt Spring整理系列 11 64 Configuration注解 64 Bean注解以及配置自动扫描 bean作用域 lt h1 gt lt div class 61 34
  • springmvc + freemarker +sitemesh

    这 都加起来 很难 网上没有解决方案 用了一天才把环境搭起来 记录如下 先把springmvc 在 web xml上的配置
  • 模块化开发的时候,sqlsession如何配置多个typeAliasesPackage,mapperLocations

    如图 我们进行模块化开发的时候 往往我们每个人的bean和mapper都不在同一个路径包内 如果我们按照以下方式配置的话 就会报异常 大致上是因为不支持
  • java中数据库重连

    当数据库重新启动 而导致程序无法连接 需要重启tomcat才能重连的解决办法 方法一 将连接池由DBCP改为C3P0 c3p0连接池本身具有数据库重连机制
  • spring的ApplicationContext 得到方式

    ClassPathXmlApplicationContext会自己在CLASSes里面找 不过我只是把配置文件放在src文件下成功找到过 String paths applicationContextDataSource xml appli
  • Bean深拷贝忽略大小写

    import java lang reflect Field import java util HashMap import java util Map public class BeanMapUtils 忽略大小写且NULL值不会覆盖新值
  • 自动表单数据封装到javaBean中

    页面表单数据的自动封装到javaBean中 先定义一个Bean类 package com test public class Bean private String name private Integer sex public Strin
  • 学习Spring

    1 如何学习Spring 你可以通过下列途径学习spring 1 spring下载包中doc目录下的MVC step by step和sample目录下的例子都是比较好的spring开发的例子 2 AppFuse集成了目前最流行的几个开源轻
  • BeanCreationException异常,注入Bean异常

    org springframework beans factory BeanCreationException Error creating bean with name XXX 注入bean异常 出现这个异常就是找不到对应的JavaBea
  • 详解Spring的CreateBean方法

    在AbstractBeanFactory类的doGetBean 中 都是调用AbstractAutowireCapableBeanFactory类的createBean 来创建Bean实例 该方法参数如下 protected Object
  • [Spring学习]04 Spring IOC创建Bean的几种方式

    目录 一 调用构造器创建Bean对象 二 调用静态工厂方法创建Bean对象 三 调用实例 动态 工厂方法创建Bean对象 一 调用构造器创建Bean对象 通过调用构造器创建Bean对象是我们在实际开发中最常用的方式 而构造器创建Bean对象
  • 【编程语言】java--jsp--javabean中的scope用法小解

    javabean中的scope用法小解 1 scope取值page JSP分配给每个bean是互不相同的 虽然bean的功能是一样 但是占据不同的内存单元 bean的有效范围是当前页面 2 scope取值session JSP分配给每个be
  • Spring3.0带来的新特性

    一 首先 模块的组织更加的细致 从那么多的jar分包就看的出来 Spring的构建系统以及依赖管理使用的是Apache Ivy 从源码包看出 也使用了Maven Maven确实是个好东西 好处不再多言 以后希望能进一步用好它 二 新特性如下
  • Spring@Autowired注解与自动装配

    1 配置文件的方法 我们编写spring 框架的代码时候 一直遵循是这样一个规则 所有在spring中注入的bean 都建议定义成私有的域变量 并且要配套写上 get 和 set方法 Boss 拥有 Office 和 Car 类型的两个属性
  • [转]Spring2+struts2+ibatis整合

    Spring2 struts2 ibatis整合 前几天因为需要 将spring2 struts2和ibatis进行了整合 整合过程涉及到很多技巧 因此作为日志保存在此 以便今后查询 各个框架在本项目内的作用 spring2 主要利用ioc
  • @Configuration和@Bean

    spring Boot提倡约定优于配置 如何将类的生命周期交给spring 1 第一种自己写的类 Controller Service 用 controller service即可 2 第二种 集成其它框架 比如集成shiro权限框架 集成

随机推荐

  • keil5[使用虚拟端口进行软件仿真串口调试]与[使用开发板串口调试]

    前言 xff1a 做串口调试试验 xff0c 写下此文章 介绍两种方式 xff0c 一种软件仿真 xff0c 一种硬件 1 虚拟端口进行软件仿真串口调试 xff1a 无需硬件 开发板 需要虚拟串口驱动 xff08 一个软件 xff09 xf
  • STM32 FreeRTOS学习——任务创建

    任务创建 任务概念 什么是任务 任务函数没有返回值 xff0c 并且参数是指针类型 很少使用 基本可以不管 void entry task void pvParameters 任务主体 xff0c 无限循环且不能返回值 while 1 任务
  • kinect v2 相机标定

    目录 ubuntu删除命令 相机标定 一些快捷键 准备工作 详细步骤 ubuntu删除命令 ubuntu中删除命令一般使用rm xff0c 但是rm误删之后 xff0c 想恢复比较麻烦 xff0c 所以在这里介绍另外一种删除方法 xff0c
  • 研究生如何读论文

    作为一个准研究生 xff0c 马上就要开始加入到读论文的大军中 xff0c 如何读论文是我们共同关心的问题 xff0c 笔者在这方面做了一些小调查 xff0c 发现台湾清华彭明辉教授的研究生手册非常有启发意义 xff0c 现摘录一下对自己很
  • 嵌入式面试资料整理

    第一章进程线程的基本概念 1 什么是进程 xff0c 线程 xff0c 有什么区别 2 多进程 多线程的优缺点 3 什么时候用进程 xff0c 什么时候用线程 4 多进程 多线程同步 xff08 通讯 xff09 的方法 5 进程线程的状态
  • MSP-EXP430F5529LP_GPIO

    为了能让学习更有动力并且坚持下去 xff0c 突然想到可以用博客的形式来记录自己的学习历程 xff0c 一方面是基于上述原因并且可以留下笔记来方便日后查看 xff0c 另一方面感觉写出来一些东西可以让学习更加具有逻辑性 xff0c 今天就让
  • 【STM32】STM32内存映射以及启动过程(超详细过程)

    一 内存映射 1 内存映射图 下图是 STM32F103xCDE 型号的内存映射图 2 内存划分 由于 STM32 是 32 位 xff0c 且其地址总线也为 32 根 xff0c 所以其理论能够寻找的地址大小为 4GB 从上图可以看出 x
  • Linux学习笔记(c):udp客户端向服务器端传输照片

    客户端 span class token macro property span class token directive keyword include span span class token string lt stdio h g
  • 立创EDA绘板记录

    今天是第一次接触EDA xff0c 下载了立创的软件画板子 简单上b站看了立创十几分钟的入门教学视频 xff0c 刚好自己手边有51单片机的开发板和一个最小系统 xff0c 就决定自己动手画一个最小系统 最小系统主要由复位电路 xff0c
  • 02-线性结构2 一元多项式的乘法与加法运算 (20 分)

    02 线性结构2 一元多项式的乘法与加法运算 20 分 设计函数分别求两个一元多项式的乘积与和 输入格式 输入分2行 xff0c 每行分别先给出多项式非零项的个数 xff0c 再以指数递降方式输入一个多项式非零项系数和指数 xff08 绝对
  • 03-树2 List Leaves (25 分)

    03 树2 List Leaves 25 分 Given a tree you are supposed to list all the leaves in the order of top down and left to right I
  • Jupyter Notebook上使用tensorflow的血泪教训

    本文所涉及的环境为CUDA Version 10 1 105 xff0c tensorflow gpu2 3 0 xff0c python3 6 xff0c 本文不涉及任何配置环境的细节 xff0c 仅分享在Jupyter Notebook
  • java.sql.SQLNonTransientConnectionException: Could not create connection to database server

    使用JdbcTemplate连接数据库时发生错误 xff1a java sql SQLNonTransientConnectionException Could not create connection to x1f4a5 报错有这么长
  • Springboot集成Neo4j与Shiro冲突

    springboot集成neo4j时 xff0c 由于neo4j与shiro均包含名为 34 sessionFactory 34 的bean xff0c 项目启动时在生成neo4j的session对象时 createSharedSessio
  • 2.4 开发自己的Spring Boot项目

    Spring MVC的视图解析器的作用主要就是定位视图的 xff0c 也就是当控制器只是返回一个逻辑名称的时候 xff0c 是没有办法直接找到对应视图的 xff0c 这就需要视图解析器来解析了 在Maven的pom xml中加入JSP和JS
  • 3.1 IoC容器简介

    所有的IoC容器都需要实现接口BeanFactory xff0c 这是一个顶级的容器接口 BeanFactory接口源码 xff1a span class token comment span span class token commen
  • 3.2.1 通过扫描装配你的Bean

    对于扫描装配而言使用的注解是 64 Component和 64 ComponentScan 64 Component是标明哪个类被扫描进入IoC容器 xff0c 而 64 ComponentScan则是标明采用何种策略去扫描装配Bean 修
  • 3.5 使用属性文件

    可以采用默认为我们配置的application properties xff0c 也可以使用自定义的配置文件 引入属性文件依赖 span class token tag span class token tag span class tok
  • 3.6 条件装配Bean

    Bean初始化前 xff0c 对某些属性进行校验 xff0c 满足校验才去装配数据源 为了处理这样的场景 xff0c 需要用到 64 Conditional注解 xff0c 同时需要配合另外一个接口Condition xff08 org s
  • 3.7 Bean的作用域

    isSingleton方法如果返回true xff0c 则Bean在IoC容器中以单例存在 xff0c 这也是Spring IoC容器的默认值 xff1b 如果isPrototype方法返回true xff0c 则当我们每次获取Bean的时