Simple Spring MVC with java config – without web.xml

In previous post, we created Spring MVC application with Spring configuration located in Java classes. There was only one xml – web.xml. To get rid off it, and to move configuration from this xml to Java class, we have to add one more class:

package com.devcases.springMVC.config;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration.Dynamic;

import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

public class AppInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
  
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(WebAppConfig.class);
   
        ctx.setServletContext(servletContext); 
  
        Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
        servlet.addMapping("/");
        servlet.setLoadOnStartup(1);
    }

}

If we are using maven, we have to disable Maven’s warning about missing web.xml file by adding to pom.xml:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>

Now our configuration contains no xml’s.

The source code for project can be downloaded from here.

Leave a Reply

Your email address will not be published. Required fields are marked *