2016-11-29 10 views
0

Ich habe Multi-Modul Spring Boot-Anwendung. Ich habe es so organisiert, dass es enthält web Modul, das @SpringBootApplication Klasse und mehrere andere Module, die von web Modul (z. B. batch-jobs Modul) importiert werden.Spring Boot: Submodul Abhängigkeit

web Modul enthält alle Abhängigkeiten von Feder boot:

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... 

Ich frage mich, ob ich alle Feder-boot-Starter-Abhängigkeiten in dieser Module enthalten sollte oder es ist besser reine Feder Abhängigkeiten zu haben wie hier:

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' 
} 

Diese Abhängigkeiten werden sowieso aus der oberen dependency-management Konfiguration übernommen. Welcher Ansatz ist besser? Kannst du bitte hier beraten?

Antwort

1

denke ich, dieser Beitrag wird als Meinungsbasis gekennzeichnet werden, aber trotzdem:

Meine Gedanken zu diesem Thema sind (oder waren, wenn ich im Frühjahr Boot aussehen) die Abhängigkeiten explizit nennen Sie aktiv in Ihrem Code verwenden (und die spezifischen Module). Aber mit Spring Boot können Sie nicht wirklich passen die Abhängigkeit in Ihren Modulen gegen die Starter im 'Projekt'. Natürlich wissen Sie vielleicht, dass ein Starter-Web mvc davon abhält, in die Abhängigkeiten außerhalb Ihres Projekts zu schauen, aber ich denke, dass es für andere schwierig werden wird, in die Definitionen zu gelangen, wenn das Projekt wächst und sie pflegt.

Pure spekulativ: Was passiert, wenn ein Starter ein Update bekommt und eine Abhängigkeit zugunsten einer anderen aufhebt? Um nur ein Beispiel zu nennen: LibX von VendorA ist jetzt auf VendorB umgestellt. Sie haben immer noch eine JSON-Abhängigkeit von VendorA in Ihrer Modulkonfiguration, aber auch VendorB wird in Ihren Klassenpfad aufgenommen. Wenn sie den gleichen voll qualifizierten Namen haben ... (bam)

Sie könnten mehrere Starter wie Persistence bezogene auf das Persistenzmodul und Web zu Web und so weiter extrahieren.

+0

Ja. Sie haben recht, wenn es um fehlende Abhängigkeiten geht, aber ich werde die Build-Funktionalität überprüfen, wenn ich Spring-Boot-Versionen aktualisiere. –

Verwandte Themen