美文网首页我爱编程
SpringMVC为何设计成单例模式?

SpringMVC为何设计成单例模式?

作者: 凌晨的咸鱼 | 来源:发表于2018-06-11 12:46 被阅读0次

何为单例、多例?

单例模式即整个程序中只有一个对象,所有用户共用一个对象(scope="singleton"),在java中SpringMVC默认为单例。

多例模式即每次访问都会创建一个新的对象(scope="prototype"),在java中struts2默认为多例。

为何struts2默认为多例?

struts2是基于类的属性开发的,类的属性作用于整个类,基于struts2开发时,每次请求都会产生一个Action对象(多例),而这个Action对象中的属性会绑定前端传过来的值,例如绑定form表单中提交的数据,所以,如果Action是单例的话,在多线程的情况下,多个用户上传的数据如何使用这一个Action对象去接收?如果是单例,每个用户是不是又能看到其他用户的信息?显然,不能用单例。

为何SpringMVC可以为单例?

SpringMVC是基于方法开发的,所以,你在Spring中几乎没见过在类里面定义了新的属性(涉及到spring多线程并发问题,没了解过并且有兴趣的小伙伴可以去百度下),那么前端传过来的值如何接收呢?答案是在方法里面的形参进行接收(接收方式有通过字符串接收,有通过对象接收等,这里不做细讲),一个方法结束形参就销毁了,多线程访问每次都会有一块新的内存空间产生,所以里面的参数是不会共用的。所以,如果你在Contorller里面不定义全局属性,那么单例完全是安全的。

总结来说就是,你在SpringMVC中不定义全局属性,那么他使用单例就是线程安全的。

为何SpringMVC设计成单例?

因为单例模式可以提高程序运行效率,提高性能,不需要每次访问都创建新的对象,所以,不需要花费额外的性能去创建对象,销毁对象,管理对象等等........

所以,我可以设计成单例以提高性能和运行效率,我为何不这么做呢?显然,SpringMVC的设计者当初就是这么想的。

注: Spring默认为单例,但是也可以改为多例。通过注解@Scope(value="prototype")

希望以简短的语言,让我们通俗的理解。

                                                                                                   —千里之行,始于足下

相关文章

  • SpringMVC为何设计成单例模式?

    何为单例、多例? 单例模式即整个程序中只有一个对象,所有用户共用一个对象(scope="singleton"),在...

  • java设计模式之单例模式实例讲解

    单例模式是应用最广的模式,在开发中,如果我们想要让一个类在nvm中只有一个实例的话,就设计成单例模式,单例模式能够...

  • 设计模式之禅(二) —— 单例、工厂、模板

    一、单例模式 单例是面试当中最常见的一种设计模式,但是我们在应用中一般都是借助 Spring 指定生成单例还是多例...

  • 【Spring MVC】controller之单例模式

    controller 是单例模式还是多例模式 springmvc controller默认的是单例singleto...

  • 设计模式-单例模式

    概念 单例模式的主要作用是保证在程序中,某个类只有一个实例存在,一些管理器和控制器常被设计成单例子模式 单例模式写...

  • 单例模式Java篇

    单例设计模式- 饿汉式 单例设计模式 - 懒汉式 单例设计模式 - 懒汉式 - 多线程并发 单例设计模式 - 懒汉...

  • SpringMVC开发 知识点速查

    SpringMVC入门 什么是SpringMVC 实现MVC设计模式的框架 SpringMVC核心组件 Dispa...

  • python中OOP的单例

    目录 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 单例

    目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

网友评论

    本文标题:SpringMVC为何设计成单例模式?

    本文链接:https://www.haomeiwen.com/subject/vpzceftx.html