2016-11-29 2 views
0

У меня есть многомодульное весеннее приложение для загрузки. Я организовал его таким образом, что он содержит модуль web, который имеет класс @SpringBootApplication и несколько других модулей, которые импортируются модулем web (например, batch-jobs).Весенняя обувь: зависимость подмодуля

web модуль содержит все зависимости от пружинной загрузки:

compile('org.springframework.boot:spring-boot-starter-batch') 
compile('org.springframework.boot:spring-boot-starter-data-jpa') 
compile('org.springframework.boot:spring-boot-starter-integration') 
... 
providedRuntime('org.springframework.boot:spring-boot-starter-tomcat') 
testCompile('org.springframework.boot:spring-boot-starter-test') 
etc... 

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

dependencies { 
    compile 'org.springframework:spring-core' 
    compile 'org.springframework:spring-context' 
    compile 'org.springframework.integration:spring-integration-java-dsl' 
    compile 'org.springframework.batch:spring-batch-core' 
    ... 
    testCompile 'org.springframework:spring-test' 
    testCompile 'org.springframework.integration:spring-integration-test' 
} 

Эти зависимости взяты в любом случае из верхней конфигурации dependency-management. Какой подход лучше? Не могли бы вы посоветовать здесь?

ответ

1

Я думаю, что это сообщение будет помечено как на основе мнений, но в любом случае:

Мои мысли по этой теме (или были, если я смотрю на весеннем ботинке) явно назвать зависимости вы активно использовать в своем коде (и конкретные модули). Но с весенним ботинком вы не можете соответствовать зависимости в ваших модулях от стартеров в «проекте». Конечно, вы можете знать, что стартер-сеть предоставит mvc возможность поиска в зависимостях вне вашего проекта, но я думаю, что другим разработчикам сложно будет найти определения, если проект будет расти и поддерживать их.

Чистый спекулятивный: что делать, если стартер получает обновление и снижает зависимость в пользу другого? Чтобы привести пример: LibX, предоставленный поставщиком, теперь переключается на vendorB. У вас все еще будет зависимость JSON от vendorA в конфигурации вашего модуля, но также и vendorB получает в вашем пути к классам. Если у них есть одно и то же полное имя ... (bam)

Вы можете извлечь несколько стартеров, например, связанных с сохранением, в модуль персистентности и веб-сайт и т. Д.

+0

Да. вы правы в отношении отсутствующих зависимостей, но в любом случае я проверю функциональность сборки при обновлении версий весенней загрузки. –

Смежные вопросы