У меня есть устаревшее приложение java, которое представляет собой монолитную сеть на основе сервлета. Мы хотим разрабатывать новые API, но за пределами монолита. Но зависимости с монолитом - проблема. Следовательно, мы изучаем возможность использования модулей Java9 в устаревшем приложении. В качестве первого шага мы просто делаем весь монолит под модулем путем рефакторинга папок и добавляем module-info. java, который экспортирует определенные пакеты. Тогда другая папка в проекте будет служить модулем API, основанным на Spring Boot. Пока это простое приложение с RestController и отображением получения.
Моя информация о модуле для модуля API выглядит следующим образом.
module api_project {
requires spring.web;
requires spring.boot;
requires spring.boot.starter.web;
requires spring.boot.autoconfigure;
opens net.ifao.api to spring.core;
}
и зависимости от градиента для модуля API выглядит следующим образом
dependencies {
implementation project(':ibetms_project')
implementation('org.springframework.boot:spring-boot-starter-web') {
exclude group: 'org.apache.tomcat.embed', module: 'tomcat-embed-core'
}
compile "javax.servlet:javax.servlet-api:3.1.0"
}
Если вы заметили, я исключаю модуль tomcat-embed-core, без которого я получаю сотни ошибок сборки, таких как
module spring.boot reads package javax.servlet from both javax.servlet.api and org.apache.tomcat.embed.core
И вы можете видеть, что я явно добавить javax.servlet-api.3.0.1. Но даже если я добавлю это или нет, я смогу успешно построить проект, но при запуске сервера я получаю следующую ошибку.
org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.
Ожидается ли это? Стоит ли добавить дополнительную зависимость? Я создал образец приложения для быстрой справки . Ваша помощь приветствуется