2015-07-23 29 views
16

Ich bin neugierig auf eine schwer fassbare - aber möglicherweise sehr leistungsfähige - DropWizard-Funktion namens Bundles. Gemäß der Dokumentation:Wann DropWizard Bundles zu verwenden?

Ein Dropwizard-Bundle ist eine wiederverwendbare Gruppe von Funktionen, die zum Definieren von Blöcken des Verhaltens einer Anwendung verwendet wird.

Da DropWizard (DW) extrem gut dokumentiert ist, ich bin schockiert, dass dies auf Bündel wirklich die einzige Erklärung. Ich sehe ein paar Beispiele von ihnen in der Wildnis:

Aber was ich nicht verstehe, ist: Bündel scheint nur Code verpackt und in JAR-Dateien verteilt werden. Also warum kann ich nicht einfach "rohe" (nicht "bundle" -konforme) Java-Klassen schreiben, um das zu tun, was ich brauche, in ein JAR eintauchend, dann dieses JAR in meinen Build/Compile-Klassenpfad aufnehmen, dann ad verwenden meine DW App? Welchen Nutzen hat ein DW-Bundle und wann sollte man es verwenden?

Antwort

6

Pakete sind wie Addons zu Dropwizard, die es sehr einfach machen, kleine Funktionen hinzuzufügen. Wenn Sie beispielsweise das Ressourcenpaket verwenden, können Sie zu Testzwecken eine Benutzeroberfläche an Ihre API anhängen und sie wird auf demselben Port ausgeführt und ist sehr einfach zu verwenden. Ein anderes Beispiel wäre das Migrationsbündel, das Liquibase leicht mit dem Dropwizard verbindet, sodass Sie Datenbankmigrationen mit demselben Jar ausführen können. Dies funktioniert auch gut, da Ihre API auf einige SQL-Datenbanken zugreifen kann, deren Verbindungsparameter in einer YML-Datei definiert sind. Die Migrationen können dann in derselben Datenbank ausgeführt werden.

+3

Danke @ user3354059 (+1) - also ich * total * bekommen, dass Bundles für die Wiederverwendung DW App-Funktionalität über mehrere DW-Anwendungen gedacht sind. Ich glaube, ich verstehe einfach nicht, warum ich ein "Bundle" erstellen muss, anstatt einfach den gemeinsamen Code in ein JAR zu packen und jede meiner DW-Apps die Klassen verwenden zu lassen, die in diesem JAR definiert sind. Alle von Ihnen zitierten Beispiele (Migrationen/Liquibase/etc.) Könnten genauso gut in eine normale JAR-Datei gepackt werden, die keiner Bundle-API entspricht, und dann könnten alle meine DW-Apps von dieser JAR abhängen und ihre Klassen verwenden, um DB zu erreichen Migrationen. Ich weiß, ich vermisse * etwas *, ich sehe es einfach nicht. – smeeb

+1

Es ist wahrscheinlich eine benutzerfreundliche Sache. Ich finde es viel einfacher, die wenigen Codezeilen hinzuzufügen, um die Bundles hinzuzufügen, als eine ganze Bibliothek für die wenigen Funktionen zu erstellen, die Sie benötigen. – user3354059

+1

Danke @ user3354059, ich googelte nach "Wie erstelle ich ein eigenes benutzerdefiniertes Bundle für Dropwizard", aber ich habe kein Tutorial, das mir hilft, mein eigenes Bundle zu erstellen. Ich habe nur einen Link, der deine Antwort ist. Aber immer noch, verschiedene Dinge sind es nicht. Ich verstehe, dass wir eine wiederverwendbare Komponente als DW (Dropwizard) -Bündel erstellen, aber immer noch nicht klar, was der Lebenszyklus von DW-Bundle ist, was die Schnittstelle erfordert, um es zu implementieren, können Sie auf einige Tutorials zeigen, die mir helfen, meine zu erstellen eigenes DW-Paket. –