`
y806839048
  • 浏览: 1126347 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

mvc框架线程安全问题

阅读更多

SpringMVC是基于方法的拦截,Struts2是基于类的拦截。 
Struts2每处理一个请求,就会实例化一个Action对象,所有不会有线程安全的问题。 
SpringMVC的controller默认是singleton的。 
单例的好处:

  1. 不用每次创建controller
  2. 减少创建对象的时间和垃圾收集的时间。

意味着每一个请求,系统都会用原有实例去处理,这样会导致多线程调用时,它里面的实例变量就不是线程安全的了。 
然而大多数情况我们根本不需要考虑线程安全的问题,比如dao,service,除非在bean中声明的实例变量。因此我们使用SpringMVC的controller是应避免在controller中定义实例变量。 
解决方案: 
1. 使用controller时,避免在controller中定义成员变量。 
2. 将controller的作用域改为@Scope=”prototype”。 
3. 在controller中使用ThreadLocal变量。

问题:那么我们的业务对象中的成员变量如,在Dao中的xxxDao,或controller中的xxxService,都会被多个线程共享,那么这些对象不会出现同步问题吗,比如会造成数据库的插入,更新异常? 
答:这些对象确实是单例的,会出现线程同步的问题。虽然这些对象会被多线程访问出现并发问题,但我们其实是访问他们里面方法,这些类里通常不含有成员变量,注入的xxxDao是Mybatis框架封装好的,已经被测试,不会出现线程同步问题了。所以出问题的地方就是我们自己系统里面的业务 对象,所以我们一定要注意这些业务对象里面千万不能要独立成员变量,否则会出错。

分享到:
评论

相关推荐

    C# MVC 线程和并发

    "C# MVC 线程和并发" 本文旨在介绍基于MVC的架构开发时的线程及并发的使用方式及常用的案例。以下是本文的知识点总结: 一、线程的简单使用 * 使用 System.Threading 命名空间 * 创建一个线程最简单的方法就是在 ...

    mvc4框架源码

    ASP.NET MVC4是一款由微软开发的用于构建动态网站的应用程序框架。它基于Model-View-Controller(MVC)设计模式,提供了分离关注点、可测试性和更好的组织代码结构的优势。让我们深入了解一下这个框架的核心概念和...

    PureMVC C#框架

    在"puremvc-csharp-standard-framework-master"这个压缩包中,你将找到PureMVC C#标准版的源代码,包括实现MVC模式的各种接口和类,以及示例应用,这些都是理解和使用PureMVC框架的关键资源。通过深入研究这些文件,...

    Unity3D客户端PureMVC框架视屏讲解

    Unity3D客户端PureMVC框架视屏讲解是一个深入解析如何在Unity3D环境中应用PureMVC框架的教学资源。PureMVC是一种轻量级、模块化的前端框架,它为游戏开发提供了一种组织代码的结构,使得项目更易于维护和扩展。在...

    servlet与Struts action线程安全问题分析

    ### servlet与Struts action线程安全问题分析 #### 一、引言 在现代Web开发中,servlet和Struts框架被广泛应用于构建高性能、高并发的Web应用程序。然而,由于它们基于Java的多线程环境运行,因此线程安全问题成为...

    自定义MVC框架需要的Jar文件

    在开发MVC框架时,日志记录是非常必要的,可以用于调试、性能分析、异常跟踪,帮助开发者了解程序运行状态,及时发现和解决问题。 2. **dom4j-1.6.1.jar**: Dom4j是一个Java文档对象模型库,主要用来处理XML文档...

    myMvcWeb2.zip java MVC框架 Struts框架的思想,动态代理,线程管理对象ThreadLocal

    这个是对java技术的一个小总结吧,用到的大概技术有:MVC框架,加注解,Struts框架的思想,动态代理,线程管理对象ThreadLocal,Connection对象池,Properties文件读取,EL表达式,JSTL,JavaBean,Java访问MySQL...

    Python-基于socket的MVC服务器框架

    在实际开发中,我们还需要考虑错误处理、性能优化(例如使用异步I/O或线程池)、安全性(防止SQL注入、XSS攻击等)以及可扩展性等问题。 总之,"Python-基于socket的MVC服务器框架"是一个学习如何结合Python的...

    mvc EF框架 开发项目的绝佳选择

    **正文** 在IT行业中,开发高效且易于维护的Web应用程序是一项重要的任务,而MVC(Model-View-...通过合理地运用Repository、DbContext管理、线程安全以及依赖注入等技术,可以显著提升项目的质量和开发者的生产力。

    Spring MVC 框架学习总结

    12. **单例和原型控制器**:Spring MVC 中的 Controller 默认为单例模式,但可以通过配置为原型模式以应对多线程场景。 13. **视图技术集成**:Spring MVC 可以方便地与多种视图技术集成,如 JSP、FreeMarker、...

    java基于MVC框架自习室管理和预约系统设计与实现毕业论文.doc

    基于MVC框架的自习室管理和预约系统设计与实现毕业论文是使用Java语言开发的,主要用于解决传统办法管理信息的缺陷,例如数据出错率高、检索数据费事费力等问题。该系统的设计和实现使用了Eclipse和Mysql作为开发...

    轻量级MVC框架DumpMVC.zip

    Dump是一个轻量级mvc框架, 正如它的名字一样, Simple is everything.Dump是一个轻配置,完全基于注解开发的 框架, 他甚至没有自己的xml文件,一切基于注解。Dump分为三个模块, 它们各执其责, 相互配合完成整个工作。...

    pureMVC资料包

    本资料包包含了关于PureMVC的SWC库文件和PDF文档,可以帮助开发者更好地理解和应用PureMVC框架。 首先,PureMVC的核心概念是其MVC模式。模型(Model)负责管理应用程序的数据,视图(View)负责显示数据,而控制器...

    Struts线程安全

    在探讨Struts框架下的线程安全问题之前,我们需要了解一些基础知识。Struts是一个用于构建企业级Java Web应用程序的开源框架,它基于MVC(Model-View-Controller)设计模式。在典型的Web应用环境中,一个Servlet实例...

    面试题精选 第五篇 MVC框架和NodeJS 答案

    ### 面试题精选:MVC框架和NodeJS #### 1. Node.js简介及其应用场景 - **定义**: Node.js 是一种开源服务器环境,它基于谷歌Chrome V8 JavaScript引擎构建,使得开发人员能够在服务器端使用JavaScript进行编程。 -...

    PureMVC.rar

    6. **Multicore**:在多线程版的PureMVC中,`Multicore`扩展了框架以支持多线程环境。它引入了一个`Core`实体,每个线程有一个独立的Core,负责管理其线程内的模型、视图和控制器。线程间的通信通过`Core`间的协调...

    Spring3.0 mvc 定时器及多线程任务demo

    在Spring 3.0 MVC框架中,定时器和多线程任务是两个关键概念,用于构建高效、自动化的Web应用程序。下面将详细讲解这两个概念及其在实际应用中的使用。 一、Spring 3.0 MVC定时器 在Spring 3.0中,我们可以使用...

    Spring MVC 框架 整合log4j

    Spring MVC 是一个强大的Java web开发框架,用于构建可维护、可扩展且高度模块化的Web应用程序。Log4j,则是Java领域广泛使用的日志记录框架,它提供了灵活的日志配置、多级别的日志输出以及多种输出格式,使得...

    springMVC+多线程+kafka的 demo基于maven

    在本项目中,我们探索了如何将Spring MVC框架与多线程、线程池和Apache Kafka集成,构建一个高效的数据处理系统。以下是关于这些技术及其整合的详细知识点: 1. **Spring MVC**: - Spring MVC是Spring框架的一个...

    基于MVC的IOS快速开发框架 BeeFramework.zip

    BeeFramework是一款iOS平台的MVC应用快速开发框架,使用Objective-C开发。 其早期原型曾经被应用在QQ空间 、QQ游戏大厅 等多款精品APP中。 BeeFramework 从根本上解决了iOS开发者长期困扰的各种问题,诸如:分层架构...

Global site tag (gtag.js) - Google Analytics