SpringMVC懒加载导致的问题一则

简介: 本文不讨论 Spring 的 @Autowired 懒加载(lazy-init)问题。今天突然发现一个问题。在Tomcat启动时,SpringMVC并没有加载,而是第一次请求到来时才进行加载。

本文不讨论 Spring 的 @Autowired 懒加载(lazy-init)问题。

今天突然发现一个问题。

在Tomcat启动时,SpringMVC并没有加载,而是第一次请求到来时才进行加载。

因为SpringMVC加载较慢, 导致 httpClient 客户端 超时而报错。

Tomcat的 catalina.out 日志信息如下:

05-Dec-2017 12:11:14.878 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 21508 ms
[2017-12-05 12:14:06 DEBUG org.springframework.web.servlet.DispatcherServlet:118 ] Initializing servlet 'SpringMVC'
[2017-12-05 12:14:06 DEBUG org.springframework.web.context.support.StandardServletEnvironment:109 ] Adding [servletConfigInitParams] PropertySource with lowest search precedence

可以看大, 12:11 分 Tomcat启动成功。 而 12:14 分才初始化 DispatcherServlet, 简单排查了一下, 在 web.xml 中加上 load-on-startup 即可。


    <!-- SpringMVC核心分发器 -->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

然后重新启动应用,一切正常。

因为加载速度大多较快,所以多数应用都没配置该参数。 但对于调用量较小的纯API来说可能就会有一些影响。

load-on-startup 配置一般是大于0的数值,表示启动顺序。 如果相同,则表明这两个Servlet启动顺序随意。

日期: 2017年12月05日

作者: 铁锚: http://blog.csdn.net/renfufei

目录
相关文章
|
JSON 前端开发 Java
hibernate+spring mvc, 解决hibernate 对象懒加载 json序列化问题
引用地址 在使用Spring MVC时,@ResponseBody 注解的方法返回一个有懒加载对象的时候出现了异常,以登录为例:   Java代码   @RequestMapping("login")       @ResponseBody       public O...
1128 0
|
7月前
|
设计模式 前端开发 JavaScript
Spring MVC(一)【什么是Spring MVC】
Spring MVC(一)【什么是Spring MVC】
|
6月前
|
设计模式 前端开发 Java
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
86 1
|
6月前
|
前端开发 Java 应用服务中间件
Spring框架第六章(SpringMVC概括及基于JDK21与Tomcat10创建SpringMVC程序)
Spring框架第六章(SpringMVC概括及基于JDK21与Tomcat10创建SpringMVC程序)
|
7月前
|
前端开发 Java 关系型数据库
基于ssm框架旅游网旅游社交平台前后台管理系统(spring+springmvc+mybatis+maven+tomcat+html)
基于ssm框架旅游网旅游社交平台前后台管理系统(spring+springmvc+mybatis+maven+tomcat+html)
|
6月前
|
XML Java 数据格式
SpringMVC的XML配置解析-spring18
SpringMVC的XML配置解析-spring18
|
6月前
|
应用服务中间件
从代码角度戳一下springMVC的运行过程-spring16
从代码角度戳一下springMVC的运行过程-spring16
|
前端开发 Java Go
Spring MVC 和 Spring Boot 的区别
Spring MVC 和 Spring Boot 的区别
226 0
|
7月前
|
移动开发 Java 测试技术
Spring MVC+Spring+Mybatis实现支付宝支付功能(附完整代码)
Spring MVC+Spring+Mybatis实现支付宝支付功能(附完整代码)
180 1
|
7月前
|
Java Apache vr&ar
springmvc报错 nested exception is org.mybatis.spring.MyBatisSystemException:
springmvc报错 nested exception is org.mybatis.spring.MyBatisSystemException: