为什么Spring-MVC将LoadOnStartup设置为1?

时间:2014-09-24 01:25:53

标签: spring-mvc

我想知道为什么将此值设置为1.我读取api,这意味着在此动态ServletRegistration所代表的Servlet上设置loadOnStartup优先级。为什么是1?

我读了一段代码:

public void onStartup(ServletContext servletContext)
            throws ServletException {
        // TODO Auto-generated method stub
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(WebAppConfig.class);
        servletContext.addListener(new ContextLoaderListener(ctx));

        ctx.setServletContext(servletContext);
        Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
        servlet.addMapping("/");
        servlet.setLoadOnStartup(1);
    }

3 个答案:

答案 0 :(得分:4)

啊1是真的惯例。 0是惯例的假。您在启动时为调度程序servlet设置加载,以便在app服务器(tomcat等)启动时初始化spring容器。

答案 1 :(得分:1)

如果此帖子上有其他人发生,我会添加此答案。根据文档,这比1 = true和0 = false更复杂。该值是定义ORDER的优先级,在该ORDER中将调用在启动时初始化的应用程序。

ServletRegistration.Dynamic.setLoadOnStartup

这已在question中介绍。

答案 2 :(得分:0)

setLoadOnStartup:

void setLoadOnStartup(int loadOnStartup)

为此动态ServletRegistration表示的Servlet设置loadOnStartup优先级。

大于等于0的loadOnStartup值向容器指示Servlet的初始化优先级。在这种情况下,容器必须在Servlet的初始化阶段,即在它调用为{{1}配置的所有ServletContext对象之后,实例化并初始化ServletContextListener }}的ServletContext方法。

如果ServletContextListener#contextInitialized是一个负整数,则容器可以自由地实例化和延迟loadOnStartup初始化。

Servlet的默认值为-1。

对此方法的调用将覆盖以前的所有设置。

loadOnStartup