众所周知,Servlet是单例的。
在struts中,Action是多例的,每一个请求都会new出来一个action来处理。
在Spring中,Controller默认是单例的,多个请求都会访问同一个controller单例。
在Spring中,一切Component,Service,Dao默认都是单例的。

Struts中的核心分发器是过滤器。
SpringMVC的核心分发器是Servlet,它的拦截是函数级别的。

单例有如下优点:减少创建对象、回收对象的开销。

Controller默认是单例,可以设置成多例。

但是,大多数情况下,是不需要多例的。这可以说是对Struts Action多例的一种否定。

下面对“线程安全的对象”进行明确定义。

  • 情况一:如果对象中没有成员变量,只有一堆方法(这些方法是线程安全的),那么这个对象是线程安全的。
  • 情况二:如果对象中所有的成员变量都是线程安全的,那么这个对象是线程安全的。

一言以蔽之,线程安全的对象=线程安全的成员变量+线程安全的成员方法。

Mybatis中的Dao都是一堆方法,没有成员变量,所以Dao层中Bean是线程安全的,是可以多例的。

如果Controller是单例的,那么Controller只能定义线程安全的成员变量。

转载于:https://www.cnblogs.com/weiyinfu/p/7518132.html

SpringMVC中的Controller默认单例相关推荐

  1. Spring MVC 中的 Controller 是多例还是单列

    前言 单例模式(Singleton)是程序设计中一种非常重要的设计模式,设计模式也是Java面试重点考察的一个方面.面试经常会问到的一个问题是:SpringMVC中的Controller是单例还是多例 ...

  2. Spring 中的 bean 为什么默认单例?

    熟悉Spring开发的朋友都知道Spring提供了5种scope分别是singleton.prototype.request.session.global session. 如下图是官方文档上的截图, ...

  3. Spring的Controller是单例还是多例?怎么保证并发的安全

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:riemann_ blog.csdn.net/riemann ...

  4. Controller 是单例还是多例?怎么保证并发的安全

    答案: controller默认是单例的,不要使用非静态的成员变量,否则会发生数据逻辑混乱.正因为单例所以不是线程安全的. 我们下面来简单的验证下: package com.riemann.sprin ...

  5. Spring 的 Controller 是单例还是多例?怎么保证并发的安全

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | riemann_ 来源 | blog.csdn ...

  6. struts1-2,springMVC原理基本对比(单例,多例)-servlet与filter区别

    2019独角兽企业重金招聘Python工程师标准>>> 最近做项目用到了struts2,之前一直是用struts1和springMVC.感觉到了struts2从很大程度上和这两个还是 ...

  7. 想过没有,Spring的Bean为啥默认单例?

    熟悉Spring开发的朋友都知道Spring提供了5种scope分别是singleton.prototype.request.session.global session. 如下图是官方文档上的截图, ...

  8. 分析JDK中的Runtime的单例设计模式以及使用小例子

    package july.star.thread23;import java.io.IOException;/*** RunTime * JDK中的一个单例设计模式* @author MoXingJi ...

  9. android 源码中的单例,Android源码中的一种单例实现

    单例模式的实现方式有懒汉,饿汉,双重校验锁,枚举,内部类等等,写法就不全部列举了.Android源码中有一个单例辅助类/frameworks/base/core/java/android/util/S ...

最新文章

  1. Android开发环境——Eclipse ADT相关内容汇总
  2. 企业网络推广之下滴滴造车野心不减,“造车时代”想入局恐需技术先行
  3. 利用Cobbler批量布署CentOS
  4. 天猫总架构师何崚:好的技术团队不是“需求翻译机”或“架构优化机”
  5. matlab中打不开保存好的模糊控制器,【求助大神】模糊控制器仿真,在Simulink运行时出现问题...
  6. ironpython使用dictionary_在C#环境中动态调用IronPython脚本(一)
  7. php array 如何访问,php – 如何访问$array [@key]值
  8. python程序调试题_关于python程序调试问题,一个文件计算的问题
  9. 【bzoj2038】[2009国家集训队]小Z的袜子(hose) 莫队算法
  10. python︱用asyncio、aiohttp实现异步及相关案例
  11. 《我也能做CTO之程序员职业规划》之四:直线定律
  12. ezcad旋转轴标刻参数_激光打标机软件ezcad中地球仪标刻使用方法教程详解
  13. vue引用echarts
  14. 【爱思考】CISP考试试题介绍(其中一部分)
  15. Python 使用openpyxl处理Excel文件
  16. 为什么感觉现在电脑病毒少了?
  17. 这些都是成为高薪运维必备的 Linux 技能,你具备了吗?
  18. Super expression must either be null or a function错误
  19. 失眠怎么办?试试汤臣倍健褪黑素和以下方法!
  20. 高速电路PCB布局布线参考

热门文章

  1. Writing and Mapping classes(Chapter 3 of NHibernate In Action)
  2. Bootstrap-CL:按钮下拉菜单
  3. asp.net中使用excel类导出Excel文件,并导出到web客户端中遇到的问题
  4. What is Equivocation in Byzantine Fault Tolerance?
  5. 【笔记目录】南邮(通达)计算机专业基础
  6. 软件设计师11-数据库
  7. SuseLinux详解(2)——网络设置静态IP 网关 DNS的方法
  8. ajax写入txt,javascript结合ajax读取txt文件内容
  9. java csv 数组_如何在Java中将JSON数组转换为CSV?
  10. views是什么意思_views是什么意思_views怎么读_views翻译_用法_发音_词组_同反义词_看( view的名词复数 )-新东方在线英语词典...