文档章节

Spring谈谈其singleton模式

wiitht
 wiitht
发布于 2017/07/13 10:21
字数 268
阅读 7
收藏 0

    spring默认对bean采用的是单例模式,单例模式的好处就是对Bean容器来说有如下几点:

        1.减少实例的创建和管理的开销;

        2.对JVM垃圾收集友好;

    事物总有两面性,有一定好处就有一定缺陷;在Tomcat中对于每个请求都是单独分配一个线程来处理的;这意味着如果单实例的bean带上了状态,那么就会出现线程不安全的问题。

    Spring也给出了我们解决方案:

  • 在Tomcat和Jetty中,request和response对象对于线程单例的;
  • 基于Invocationhandler的动态代理;
  • ThreadLoacl是从当前线程中获取对象;
  • 在web项目中,可以使用Listener监听并处理http请求;

    参考

    其中我个人认为最核心的处理方案还是ThreadLocal通过本地线程对象解决了当前线程变量的存储(一般喜欢存放数据库实例connection,request等等)问题,从而避免了线程安全问题。

© 著作权归作者所有

共有 人打赏支持
wiitht
粉丝 2
博文 158
码字总数 113789
作品 0
深圳
架构师
Spring中bean的scope用法

Spring中bean的scope有六种:singleton,prototype,request,session,global session,application。此外,用户还可以自定义scope。还有一种scope是thread类型的,但是默认没有启用。 sing...

davelet
2016/04/25
0
0
SpringFramework核心技术一(IOC:Bean的分析)

Bean的概述 Spring IoC容器管理一个或多个bean。这些bean是使用您提供给容器的配置元数据创建的,例如,以XML 定义的形式 。 在容器本身中,这些bean定义被表示为BeanDefinition 对象,其中包...

王木东
05/13
0
0
Spring容器中Bean的作用域

当通过Spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域。Spring支持如下5种作用域: singleton:单例模式,在整个Spring IoC容器中,使用singl...

摆渡者
2014/02/26
0
1
Spring温故而知新 - bean的装配

按条件装配bean 就是当满足特定的条件时Spring容器才创建Bean,Spring中通过@Conditional注解来实现条件化配置bean package com.sl.ioc;import org.springframework.context.annotation.Bean;...

Java-老刘
05/07
0
0
java基础---深入解析spring中用到的九种设计模式

转载请注明出处,文章首发于:http://itxxz.com/a/javashili/tuozhan/2014/0601/7.html 设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记...

u010775025
04/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

HTML显示json字符串并且进行格式化

通过pre标签进行格式化展示,使用JSON.stringify()方法转换。 代码如下:   <html> <head> <title>HTML显示json字符串并且进行格式化</title> </head> <body> <p id="show_p">{ "name": "B......

writeademo
1分钟前
0
0
LNMP——php-fpm

php-fpm的pool •vim /usr/local/php/etc/php-fpm.conf //在[global]部分增加include并删除我们之前www池子 • include = etc/php-fpm.d/*.conf • mkdir /usr/local/php/etc/php-fpm.d/ • ......

chencheng-linux
4分钟前
0
0
fixed在微信下的BUG

最近在一个项目中,碰到了一个问题,是属于微信内部的问题,或者说,是属于APP内部的问题,它的根源来自于fixed定位以及-webkit-overflow-scrolling的组合使用,虽然现在还无法理解问题的根源...

Jack088
8分钟前
0
0
sentry错误日志收集

安装方式 : 1 docker 2 Python 安装docker,使用命令 sudo yum -y install docker-io 启动docker 使用命令service docker start docker换源sudo curl -sSL https://get.daocloud.io/daotoo......

猿神出窍
9分钟前
0
0
input输入框的限制

1、键入时候保存数字, 问题:多个输入框的时候,连续输入非数字,导致删除的非数字出现 onkeyup="this.value=this.value.replace(/\D/g,'')" 2、onkeypress,返回true和false来设置是否键入...

大美琴
12分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部