欢迎访问我的博客shammgodyoung

第一:如果你使用BeanFactory作为Spring Bean的工厂类,则所有的bean都是在第一次使用该Bean的时候实例化 
第二:如果你使用ApplicationContext作为Spring Bean的工厂类,则又分为以下几种情况: 
       (1):如果bean的scope是singleton的,并且lazy-init为false(默认是false,所以可以不用设置),则ApplicationContext启动的时候就实例化该Bean,并且将实例化的Bean放在一个map结构的缓存中,下次再使用该Bean的时候,直接从这个缓存中取 
       (2):如果bean的scope是singleton的,并且lazy-init为true,则该Bean的实例化是在第一次使用该Bean的时候进行实例化

(3):如果bean的scope是prototype的,则该Bean的实例化是在第一次使用该Bean的时候进行实例化

几种解决方法:
1、在控制器中不使用实例变量
2、将控制器的作用域从单例改为原型,即在spring配置文件Controller中声明 scope="prototype",每次都创建新的controller
3、在Controller中使用ThreadLocal变量

这几种做法有好有坏,第一种,需要开发人员拥有较高的编程水平与思想意识,在编码过程中力求避免出现这种BUG,而第二种则是容器自动的对每个请求产生一个实例,由JVM进行垃圾回收,因此做到了线程安全。
使用第一种方式的好处是实例对象只有一个,所有的请求都调用该实例对象,速度和性能上要优于第二种,不好的地方,就是需要程序员自己去控制实例变量的状态保持问题。第二种由于每次请求都创建一个实例,所以会消耗较多的内存空间。
所以在使用spring开发web 时要注意,默认Controller、Dao、Service都是单例的

spring什么时候实例化bean相关推荐

  1. Spring实例化Bean

    在面向对象的程序中,要想调用某个类的成员方法,就需要先实例化该类的对象.在 Spring 中,实例化 Bean 有三种方式,分别是构造器实例化.静态工厂方式实例化和实例工厂方式实例化. 构造器实例化 ...

  2. Spring解析,加载及实例化Bean的顺序(零配置)

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 作者:jb_hz blog.csdn.net/qq_2752 ...

  3. java 实例化 bean,Spring(02)——bean实例化

    2 bean的实例化 2.1 构造方法实例化 bean的实例化默认是通过构造方法进行的,在未指定构造方法参数的情况下,默认会通过无参构造方法来进行bean的实例化.如下这种就是通过无参构造方法进行实例 ...

  4. 【死磕 Spring】—– IOC 之 Factory 实例化 bean

    这篇我们关注创建 bean 过程中的第一个步骤:实例化 bean,对应的方法为: createBeanInstance(),如下: protected BeanWrapper createBeanIn ...

  5. Spring BeanFactory实例化Bean的过程

    Spring BeanFactory实例化Bean的过程 Bean的实例化是Bean生命周期的一个非常重要的环节,一般来说,初始化后,就不再改变了,直到bean被从BeanFactory中显式的移除. ...

  6. Spring之使用注解实例化Bean并注入属性

    1.准备工作 (1)导入jar包 除了上篇文章使用到的基本jar包外,还得加入aop的jar包,所有jar包如下 所需jar包 (2)配置xml <?xml version="1.0& ...

  7. Spring Ioc源码分析 之 Bean的加载(4):实例化Bean(createBeanInstance()方法)

    实例化 Bean 在doCreateBean()代码 <2> 处,有一行代码instanceWrapper = createBeanInstance(beanName, mbd, args ...

  8. 2014-03-09 Spring的学习(1)------Spring管理Bean(实例化Bean)

    2019独角兽企业重金招聘Python工程师标准>>> 1.搭建与测试Spring的开发环境 PS: Spring-beans-2.5.xsd  (为使在Beans.xml操作顺畅) ...

  9. spring实例化bean的方式

    主要利用三种注入方式 接口注入(不推荐) getter,setter方式注入(比较常用) 构造器注入(死的应用) 关于getter和setter方式的注入 有三种匹配方式: autowire=&quo ...

最新文章

  1. 连接没反应_显示器USB接口的作用是什么?为什么会没有反应?
  2. 查看Linux软件信息
  3. 第二部分面向对像基础第五章
  4. Apollo技能图谱2.0焕新发布 更新7大能力91个知识点
  5. python课后题答案第一章_Python程序设计课后习题答案-第一单元
  6. 【Elasticsearch】Elasticsearch 基于scoll技术滚动搜索大量数据
  7. yaf index.php,yaf框架访问路由为什么始终访问INDEX下的INDEX控制器下的INDEX方法
  8. mysql 中触发器的使用
  9. 修电脑入门名词及等级划分
  10. 金蝶KIS商贸高级版V6.1开发实现‘序时簿中心’增加'联系人'字段列
  11. dell机架式服务器型号,戴尔R910机架式服务器
  12. c语言编程入门ppt教程下载,c语言编程入门教程教本精简版.ppt
  13. 使用Filler4提取微信小程序中的视频
  14. 电机编码器调零步骤_各种编码器调零方法
  15. 用于汽车传感器的混合点云语义压缩:性能评估
  16. 关于区块链的三个隐喻
  17. 聊聊游戏:《空洞骑士》为什么好玩
  18. echarts.js刻度标签实现富文本实现中文+图片的效果解决方法
  19. NGINX-RTMP 直播服务部署
  20. 网众无盘多服务器,网众无盘多配置建立方案

热门文章

  1. 一个监测TCP阻断的小工具
  2. 电信增值业务寻找合作伙伴
  3. 使用Python进行短信与邮件的发送
  4. 刀塔omg塔防去限制版使用方法
  5. HTML中设置超链接标记的是,在HTML中,超链接标记的格式为
  6. u-boot-2014.10移植第7天----深入分析代码(二)
  7. iPhoneXs上市机型曝光,果粉们这次你买不买账?
  8. mysql 主键重复问题解决 Duplicate entry '787192513' for key 'PRIMARY'
  9. 12生肖能够旺财运的风水花草
  10. OKR案例:持续激励是提高员工积极性的路径