Как запустить простой проект на 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 шт):
Покажу на примере простейшего приложения из документации 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 или использовать любой другой способ.
