Как запустить простой проект на tomcat без xml, jsp, spring-boot?

Мне нужно запустить веб-проект на tomcat без xml, jsp, spring-boot на Gradle с помощью Spring-MVC.

Структура проекта :

введите сюда описание изображения

Вопрос Какие классы я должен создать в модуле web и что я в них должен написать? Извините если плохо пояснил вопрос, ибо только начал разбираться в теме.

На данный момент у меня примерно так (Все классы находятся в модуле web):

Controller

@RestController
@ComponentScan("com.example")
public class Controller {

    @GetMapping("123")
    public String add() {
        return "123";
    }
}

Dispatcher

public class Dispatcher extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null;
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

SpringConfig

@Configuration
public class SpringConfig {
}

При запуске tomcat получается вот это: введите сюда описание изображения

В том tomcat использую обычный war. Пробовал использовать war exploded, но ничего не поменялось.

Вот такой часть лога при запуске tomcat

[http-nio-8080-exec-1] DEBUG org.springframework.web.servlet.DispatcherServlet - GET "/", parameters={}
[http-nio-8080-exec-1] WARN org.springframework.web.servlet.PageNotFound - No mapping for GET /
[http-nio-8080-exec-1] DEBUG org.springframework.web.servlet.DispatcherServlet - Completed 404 NOT_FOUND
[http-nio-8080-exec-2] DEBUG org.springframework.web.servlet.DispatcherServlet - GET "/", parameters={}
[http-nio-8080-exec-2] WARN org.springframework.web.servlet.PageNotFound - No mapping for GET /
[http-nio-8080-exec-2] DEBUG org.springframework.web.servlet.DispatcherServlet - Completed 404 NOT_FOUND
[http-nio-8080-exec-4] DEBUG org.springframework.web.servlet.DispatcherServlet - GET "/", parameters={}
[http-nio-8080-exec-4] WARN org.springframework.web.servlet.PageNotFound - No mapping for GET /
[http-nio-8080-exec-4] DEBUG org.springframework.web.servlet.DispatcherServlet - Completed 404 NOT_FOUND

Ответы (2 шт):

Автор решения: JavaJunior

Для корневого доступа используйте @GetMapping("/")

→ Ссылка
Автор решения: Roman Konoval

Покажу на примере простейшего приложения из документации https://spring.io/guides/gs/spring-boot/.

Берете исходный код из https://github.com/spring-guides/gs-spring-boot/tree/2.1.6.RELEASE/initial и нем делаете несколько изменений. Во-первых, нужно добавить сборку архива *.war.

Для сборки мавеном добавьте в pom.xml:

    <groupId>org.springframework</groupId>
    <artifactId>gs-spring-boot</artifactId>
    <version>0.1.0</version>
    <packaging>war</packaging>   <!-- эта строка позволит собирать *.war -->

Для gradle добавьте в build.gradle на верхнем уровне:

apply plugin: 'idea'
apply plugin: 'war'   // эту строку

Далее нужно главный класс приложения унаследовать от SpringBootServletInitializer:

import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class Application extends SpringBootServletInitializer {

... тут все как и раньше
}

После этого собираете веб-архив.

Мавеном:

mvn clean package

*.war файл будет в каталоге target.

Для gradle сборка делается командой:

./gradlew clean assemble

и результат в build/libs/

Далее разворачиваете собраный *.war файл на томкате. Можно просто скопировать в каталог webapps или использовать любой другой способ.

→ Ссылка