SpringMVC中的Controller默认单例
众所周知,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默认单例相关推荐
- Spring MVC 中的 Controller 是多例还是单列
前言 单例模式(Singleton)是程序设计中一种非常重要的设计模式,设计模式也是Java面试重点考察的一个方面.面试经常会问到的一个问题是:SpringMVC中的Controller是单例还是多例 ...
- Spring 中的 bean 为什么默认单例?
熟悉Spring开发的朋友都知道Spring提供了5种scope分别是singleton.prototype.request.session.global session. 如下图是官方文档上的截图, ...
- Spring的Controller是单例还是多例?怎么保证并发的安全
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:riemann_ blog.csdn.net/riemann ...
- Controller 是单例还是多例?怎么保证并发的安全
答案: controller默认是单例的,不要使用非静态的成员变量,否则会发生数据逻辑混乱.正因为单例所以不是线程安全的. 我们下面来简单的验证下: package com.riemann.sprin ...
- Spring 的 Controller 是单例还是多例?怎么保证并发的安全
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | riemann_ 来源 | blog.csdn ...
- struts1-2,springMVC原理基本对比(单例,多例)-servlet与filter区别
2019独角兽企业重金招聘Python工程师标准>>> 最近做项目用到了struts2,之前一直是用struts1和springMVC.感觉到了struts2从很大程度上和这两个还是 ...
- 想过没有,Spring的Bean为啥默认单例?
熟悉Spring开发的朋友都知道Spring提供了5种scope分别是singleton.prototype.request.session.global session. 如下图是官方文档上的截图, ...
- 分析JDK中的Runtime的单例设计模式以及使用小例子
package july.star.thread23;import java.io.IOException;/*** RunTime * JDK中的一个单例设计模式* @author MoXingJi ...
- android 源码中的单例,Android源码中的一种单例实现
单例模式的实现方式有懒汉,饿汉,双重校验锁,枚举,内部类等等,写法就不全部列举了.Android源码中有一个单例辅助类/frameworks/base/core/java/android/util/S ...
最新文章
- Android开发环境——Eclipse ADT相关内容汇总
- 企业网络推广之下滴滴造车野心不减,“造车时代”想入局恐需技术先行
- 利用Cobbler批量布署CentOS
- 天猫总架构师何崚:好的技术团队不是“需求翻译机”或“架构优化机”
- matlab中打不开保存好的模糊控制器,【求助大神】模糊控制器仿真,在Simulink运行时出现问题...
- ironpython使用dictionary_在C#环境中动态调用IronPython脚本(一)
- php array 如何访问,php – 如何访问$array [@key]值
- python程序调试题_关于python程序调试问题,一个文件计算的问题
- 【bzoj2038】[2009国家集训队]小Z的袜子(hose) 莫队算法
- python︱用asyncio、aiohttp实现异步及相关案例
- 《我也能做CTO之程序员职业规划》之四:直线定律
- ezcad旋转轴标刻参数_激光打标机软件ezcad中地球仪标刻使用方法教程详解
- vue引用echarts
- 【爱思考】CISP考试试题介绍(其中一部分)
- Python 使用openpyxl处理Excel文件
- 为什么感觉现在电脑病毒少了?
- 这些都是成为高薪运维必备的 Linux 技能,你具备了吗?
- Super expression must either be null or a function错误
- 失眠怎么办?试试汤臣倍健褪黑素和以下方法!
- 高速电路PCB布局布线参考
热门文章
- Writing and Mapping classes(Chapter 3 of NHibernate In Action)
- Bootstrap-CL:按钮下拉菜单
- asp.net中使用excel类导出Excel文件,并导出到web客户端中遇到的问题
- What is Equivocation in Byzantine Fault Tolerance?
- 【笔记目录】南邮(通达)计算机专业基础
- 软件设计师11-数据库
- SuseLinux详解(2)——网络设置静态IP 网关 DNS的方法
- ajax写入txt,javascript结合ajax读取txt文件内容
- java csv 数组_如何在Java中将JSON数组转换为CSV?
- views是什么意思_views是什么意思_views怎么读_views翻译_用法_发音_词组_同反义词_看( view的名词复数 )-新东方在线英语词典...