我想知道为什么将此值设置为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);
}
答案 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