Servlet3.0之后,提供了注解,使得不需要在web.xml中进行servlet的配置。
在原web.xml中,<load-on-startup>1</load-on-startup>的作用:
1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
2)它的值必须是一个整数,表示servlet应该被载入的顺序
3)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
4)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
5)当值相同时,容器就会自己选择顺序来加载。
在基于java注解的配置中,实现WebApplicationInitializer类都可以在web应用程序启动时被加载。
WebApplicationInitializer必须通过SpringServletContailnerIntializer才能加载。
public interface WebApplicationInitializer { void onStartup(ServletContext servletContext) throws ServletException; }
SpringServletContainerInitializer:
@HandlesTypes(WebApplicationInitializer.class) public class SpringServletContainerInitializer implements ServletContainerInitializer { @Override public void onStartup(Set<Class<?>> webAppInitializerClasses, ServletContext servletContext) throws ServletException { List<WebApplicationInitializer> initializers = new LinkedList<WebApplicationInitializer>(); if (webAppInitializerClasses != null) { for (Class<?> waiClass : webAppInitializerClasses) { if (!waiClass.isInterface() && !Modifier.isAbstract(waiClass.getModifiers()) && WebApplicationInitializer.class.isAssignableFrom(waiClass)) { try { initializers.add((WebApplicationInitializer) waiClass.newInstance()); } catch (Throwable ex) { throw new ServletException("Failed to instantiate WebApplicationInitializer class", ex); } } } } if (initializers.isEmpty()) { servletContext.log("No Spring WebApplicationInitializer types detected on classpath"); return; } servletContext.log(initializers.size() + " Spring WebApplicationInitializers detected on classpath"); AnnotationAwareOrderComparator.sort(initializers); for (WebApplicationInitializer initializer : initializers) { initializer.onStartup(servletContext); } } }
注:
1.要实现ServletContainerInitializer接口,必须指定实现的类。@HandlesTypes就起到关键性作用。
2.在spring-web-x.x.x..RELEASE.jar中META-INF/services/javax.servlet.ServletContainerInitializer里面的内容必须是实现ServletContainerInitializer的类。
javax.servlet.ServletContainerInitializer:
org.springframework.web.SpringServletContainerInitializer
ServletContainerIntializer:
public interface ServletContainerInitializer { void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException; }
相关推荐
1. **检查类路径**:确保包含所有必要的Spring库,特别是`spring-web`和`spring-webmvc`模块,因为`WebApplicationInitializer`位于`spring-web`中。 2. **检查初始化类**:确认至少有一个类实现了`...
INFO: No Spring WebApplicationInitializer types detected on classpath 九月 18, 2013 11:39:04 上午 org.apache.catalina.core.ApplicationContext log INFO: Initializing Spring root WebApplicationContext ...
4. **Web应用启动**:Spring Boot的`WebApplicationInitializer`和`SpringBootServletInitializer`类是用于启动Web应用的关键。它们实现了Servlet 3.0的接口,使得应用可以不依赖于web.xml启动。 5. **Actuator模块...
在传统的Spring项目中,需要手动配置WebApplicationInitializer,而Spring Boot则简单得多,只需一个`spring-boot-starter-web`依赖即可自动配置Web环境。测试库的依赖管理也是类似,Spring Boot的`spring-boot-...
例如,下面的MyWebApplicationInitializer类实现了WebApplicationInitializer接口,它在onStartup方法中负责加载Spring Web应用配置,并创建并注册DispatcherServlet。 public class MyWebApplicationInitializer ...
Spring的Web MVC框架在4.1版本中进行了优化,支持RESTful风格的控制器,增强了模型视图解析器(ViewResolver)的灵活性,同时引入了WebApplicationInitializer接口,使得无需web.xml就能初始化Spring MVC应用。...
1. 实现`javax.servlet.Filter`接口:创建一个类,实现`doFilter()`方法,然后在`WebApplicationInitializer`或`WebMvcConfigurer`接口的实现类中注册该过滤器。 ```java public class MyFilter implements Filter ...
public class AppConfig extends WebApplicationInitializer { @Override protected void registerInitializers(WebApplicationContext wac) { new VaadinServletConfiguration(wac, getClass()).register(); }...
Spring Boot项目不再需要`web.xml`,而是通过实现`WebApplicationInitializer`接口来自定义项目启动时的初始化操作,如加载Spring MVC容器。 在实际开发中,有时为了简化配置,所有配置可能会合并到Spring MVC的...
服务器启动时,由WebApplicationInitializer初始化Spring配置。 最终访问地址 -> http:// localhost:8080 / 工程名 / data / person?id = 15 输出将显示如下 ↓ JSON { “id” :15 ,“location” :“Varanasi...
- **WebApplicationInitializer**:Spring Boot自动配置Servlet、Filter和Listener,无需传统web.xml配置。 - **DispatcherServlet**:Spring Boot会默认创建一个DispatcherServlet,处理所有HTTP请求。 - **...
* 如果使用Spring 3.1,可以通过实现WebApplicationInitializer接口(listing 4) 在项目中,每一个模块一个jar包,可以在该jar包中使用web-fragment.xml文件,该文件放置在META-INF目录中,且在一个jar包中。该...
可以创建一个实现了`WebApplicationInitializer`接口的类,如`WebInit`,在`onStartup`方法中初始化SpringMVC容器和其他必要组件。 值得注意的是,如果要在SpringMVC中加载Spring容器,需要在SpringMVC配置的包扫描...
- **Spring MVC**:在 Spring 中,配置 MVC 需要定义调度器 Servlet、映射等,可能涉及 web.xml 或使用 WebApplicationInitializer。而在 Spring Boot 中,通过 @SpringBootApplication 注解即可自动配置 MVC。 ...
相反,它依赖于Spring的WebApplicationInitializer类,因此不需要web.xml。 如何建造 让Maven编译代码: mvn compile 如果出现错误,请检查您的计算机上是否安装了Thrift二进制文件。 如果没有,请访问以下载并...
Spring 提供了名为 SpringServletContainerInitializer (SSCI) 的实现,它进一步查找并使用实现了 WebApplicationInitializer 接口的类来配置 Servlet 容器。 Spring 3.2 引入了对注解配置的支持,提供了一个抽象类...
在本文中,我们将深入探讨如何将Apache Axis2与Spring Boot集成,以构建一个高效、可扩展的Web服务应用。Apache Axis2是Java平台上的一个Web服务框架,它提供了高性能、灵活的服务开发和部署机制。而Spring Boot是...
4. **WebApplicationInitializer**:理解 Spring Boot 如何实现无 XML 的 Web 应用初始化。 ### 三、Spring Boot 工具使用 1. **Spring Initializr**:在线生成 Spring Boot 项目结构,快速搭建项目基础。 2. **...
在本教程中,我们将探讨如何使用Java配置在Spring Boot中实现自动配置,这将帮助我们构建更加简洁且高效的项目结构。首先,我们需要创建一个基础的Maven工程,并配置相关的依赖。 1. 创建工程: 创建一个普通的...
- 引入了WebApplicationInitializer接口,允许通过编程方式配置应用初始化。 - 对WebSocket的支持,适应现代Web交互需求。 3. **Hibernate 4 整合** - Hibernate 4是强大的ORM框架,能够将Java对象映射到关系...