Spring Boot: Fast MVC start


I planned to write an article about Spring Boot more than a year ago. Finally I have time and inspiration for this. So prepare yourself for 10 – 15 minutes of step by step tutorial. I’m going to demonstrate Spring Boot basics with Gradle and embedded Tomcat. I use Intellij IDEA instead of Eclipse but this shouldn’t be a problem for those of you who used to Eclipse.

Introduction to Spring Boot

What’s my goal? I want to develop something very similar to one of my previous tutorials about Spring with java configurations. It’s a good exercise to compare two different approaches for Spring development.

No doubt, most of you know what is the main aim of the Spring Boot. For the rest of readers I want to say that the Spring Boot makes developers happier because it takes care of configurations meanwhile a developer can focus on a code production. For more details read official reference.

Gradle build file


For managing dependencies and build of the project I use Gradle. Here is how build.gradle file looks:

buildscript {
    repositories {
        //Required repos
        maven { url "http://repo.spring.io/snapshot" }
        maven { url "http://repo.spring.io/milestone" }
    dependencies {
        //Required dependency for spring-boot plugin
        classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.1.2.BUILD-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'spring-boot'

war {
    baseName = 'companies'
    version =  '0.1'

repositories {
    maven { url "http://repo.spring.io/snapshot" }
    maven { url "http://repo.spring.io/milestone" }

dependencies {
    compile 'org.springframework.boot:spring-boot-starter-web'
    //Required dependency for JSP
    providedRuntime 'org.apache.tomcat.embed:tomcat-embed-jasper'

If you are new to Gradle, I recommend you to read about it somewhere else, e.g. on official site. It’s really nice and practical tool. It can do everything what Maven do, but without XML =)

Spring Boot initialisation

Now we can setup the Spring Boot on a java code level.

package com.companies;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

public class CompanyApplication {

    public static void main(String[] args) {
        SpringApplication.run(CompanyApplication.class, args);


That’s it, now you can start develop your business logic. Just kidding, we need to put some extra configs related to view resolving.

package com.companies.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

public class WebMvcConfig extends WebMvcConfigurerAdapter{

    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {

    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        return resolver;


After you created the class published above, you can go ahead with controller development.

Controller & View

package com.companies.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

public class HelloWorldController {

    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public ModelAndView hello() {
        ModelAndView mav = new ModelAndView();
        String str = "Hello World!";
        mav.addObject("message", str);

        return mav;


And corresponding view hello.jsp for the controller:

    <title>Hello world page</title>

I hope it wan’t hard to repeat all these steps.

Run Spring Boot application

The last thing which we have to do in this tutorial is launch of the application. Hence I use Gradle, and in our build.gradle file I specified that the application need to be package as WAR file – I need to run build and run war file.
Here is how it looks like in IDEA:


Result you can see here localhost:8080/hello

If you want to perform start of the app more simply, just run the CompanyApplication.class

  • Rishish Dixit

    I am getting following error everytime I run…Any idea why??

    INFO: Deploying configuration descriptor C:workdevsetupapache-tomcat-7.0.56confCatalinalocalhostMobileApp.xml

    Nov 15, 2014 12:51:35 PM org.apache.catalina.startup.HostConfig deployDescriptor

    WARNING: A docBase C:workdevsetupapache-tomcat-7.0.56webappsMobileApp inside the host appBase has been specified, and will be ignored

    Nov 15, 2014 12:51:35 PM org.apache.catalina.startup.SetContextPropertiesRule begin

    WARNING: [SetContextPropertiesRule]{Context} Setting property ‘source’ to ‘org.eclipse.jst.jee.server:MobileApp’ did not find a matching property.

    Nov 15, 2014 12:51:37 PM org.apache.tomcat.websocket.server.WsSci onStartup

  • Sarika

    Don’t you need a Dispatcher Servlet just like with regular Spring MVC?