spring-boot-starter-web с типом веб-приложения NONE. Зачем? - PullRequest
1 голос
/ 28 мая 2020

Я никогда раньше не использовал CommandLineRunner, потому что я всегда писал веб-серверы. На этот раз я создаю микросервис (задание CRON), который просыпается, делает отдых и вызовы db и останавливается.

Для этого проекта, как и для других, изначально у меня была следующая зависимость:

implementation "org.springframework.boot:spring-boot-starter-web:$springBootVersion"

Пока я не узнал, есть что-то под названием CommandLineRunner и, поскольку мне не нужен Интернет сервер работает, я могу отключить его, набрав .setWebApplicationType(WebApplicationType.NONE);

. Теперь мне интересно, какой смысл включать spring-boot-starter-web, если мы отключим его веб-сервер? Я использую Spring Boot framework, чтобы использовать его зависимости по умолчанию (такие как jackson, et c.) И для его инфраструктуры управления зависимостями.

(Боковое примечание: я попытался перейти на sprint-boot-starter, но возникла следующая проблема, которую я не смог решить, поэтому я думаю, что продолжаю использовать spring-boot-starter-web:

Correct the classpath of your application so that it contains a single, compatible version of org.springframework.http.converter.json.Jackson2ObjectMapperBuilder)

1 Ответ

0 голосов
/ 28 мая 2020

Мы видим, что spring-boot-starter-web включает:

spring-boot-starter
spring-boot-starter-json
spring-boot-starter-tomcat
spring-web
spring-webmvc
hibernate-validator

Глядя на то, где находится Jackson2ObjectMapperBuilder, мы видим, что он находится в spring-web, который включен в spring-boot-starter-json.

Я подозреваю, что если вы добавите spring-boot-starter-json, вы будете на шаг ближе к запуску вашей службы без компонента веб-сервера.

Анализаторы зависимостей Maven могут сэкономить немало проблем в будущем, начав с top и посмотрите, что включает в себя каждый из файлов POM.

...