2015-07-23 10 views
16

Sono curioso di una sfuggente - ma potenzialmente molto potente - funzione DropWizard denominata Bundles. Secondo i documenti:Quando utilizzare i pacchetti DropWizard?

Un pacchetto Dropwizard è un gruppo riutilizzabile di funzionalità, utilizzato per definire i blocchi del comportamento di un'applicazione.

Dato che DropWizard (DW) è estremamente ben documentato, sono scioccato che questo è davvero l'unica spiegazione su fasci. Vedo alcuni esempi di loro in natura:

Ma quello che non capisco è: fasci sembrano essere solo il codice confezionato e distribuito in vasetti. Quindi, perché non posso scrivere solo classi Java "raw" (non "bundle") per fare quello che mi serve, schiaffarle in un JAR, quindi includere quel JAR sul mio classpath di compilazione/compilazione, quindi usarle in la mia app DW? A che cosa serve un pacchetto DW e quando è necessario utilizzarli?

risposta

6

I bundle sono come addonatori a Dropwizard che rendono molto facile aggiungere piccole funzionalità. Ad esempio, se si utilizza il pacchetto di risorse, è possibile allegare un'interfaccia utente all'API per scopi di test e verrà eseguita sulla stessa porta ed è molto facile da utilizzare. Un altro esempio potrebbe essere il pacchetto Migrations che lega facilmente Liquibase a Dropwizard in modo da poter eseguire migrazioni di database con lo stesso jar. Funziona bene anche perché la tua API potrebbe accedere a qualche database sql che ha parametri di connessione definiti in un file yml, le migrazioni potrebbero essere eseguite sullo stesso database.

+3

Grazie a @ user3354059 (+1) - così ho * capito * che i pacchetti sono pensati per riutilizzare le funzionalità dell'app DW in più app DW. Immagino di non capire il motivo per cui ho bisogno di creare un "pacchetto", ma solo di impacchettare il codice comune in un JAR e di utilizzare ciascuna delle mie app DW per le classi definite in quel JAR. Tutti gli esempi citati (Migrations/Liquibase/etc.) Potrebbero anche essere impacchettati in un normale JAR - non conforme a nessuna API Bundle - e quindi tutte le mie app DW potrebbero dipendere da quel JAR e usare le sue classi per realizzare DB migrazioni. So che mi manca * qualcosa *, semplicemente non lo vedo. – smeeb

+1

Probabilmente è una cosa facile da usare. Trovo molto più facile aggiungere le poche righe di codice per aggiungere i bundle piuttosto che creare un'intera libreria per le poche funzioni necessarie. – user3354059

+1

Grazie a @ user3354059, stavo cercando su google "come creare un bundle personalizzato per dropwizard", ma non ho fatto alcun tutorial che mi aiuti a creare il mio bundle. Ho solo un link che è la tua risposta. Ma ancora, varie, le cose non lo sono. Capisco che creiamo un componente riutilizzabile come pacchetto DW (dropwizard), ma non è ancora chiaro quale sia il ciclo di vita del bundle DW, quali sono le interfacce necessarie per implementarlo, puoi puntare ad alcuni tutorial che mi aiutano a creare il mio proprio pacchetto DW. –