Daily Archives: 2017-10-22

Spring MVC Web服务的Controller的单例模式

2017-10-22 by Jinyang | No Comments | Filed in 技术相关

某服务在线上总是只能稳定几天    有时一需要需要重启几次,每次失去响应时  必须要重启才能解决。 同容器下的其他服务正常,此前看过日志   发现服务挂掉前有内存溢出的情况。 但是内存降下来后   其他服务都恢复了,就它没能恢复,总是要手工处理,很不好。 我猜测是因为其他代码比较老,直接是JSP或Servlet等形式,每次请求都生成对象, 看了下SpringMVC的控制器的单例模式,默认其他就是单例模式( Singleton )  为的是减少内存申请的开销和占用,本质是个好的出发点, 在控制器声明出增加注解将其修改为Session模式,因为是web项目,我想Session模式应该是web项目最适合的场景了。 代码就一行:  @Scope(value = “session”) //session模式 分别测试了模式的单例模式, 增加了打印Controller的Object的ID的代码如下 : _log.info(“loading form page”); _log.info(“session is :”+req.getSession().getId()); _log.info(“object is :”+ java.lang.System.identityHashCode(this));     测试得到对象的identityHashCode符合预期: 2017-10-21 20:00:34,191 DEBUG – DispatcherServlet with name ‘springMVC’ processing GET request for [/********/******/****.do] 2017-10-21 20:00:34,192 DEBUG – Looking up handler method for […]

返回顶部