Sto affrontando un problema di progettazione con il profilo di Spring e il progetto multimodule Maven da cui sto costruendo un prodotto, come un web come applicazione che può essere personalizzata per i diversi clienti. Per questo ho bisogno di un po 'di organizzazione del mio codice, questo è il motivo per cui sto navigando su come organizzare i miei profili attorno al mio codice.
Al momento sto usando solo 2 profili: dev / prod per l'intera applicazione. Questi profili sono entrambi profili esperti e profili a molla. Il profilo Spring è nel web.xml del mio archivio web che proviene dal filtraggio di maven.
Avere solo questo è un po 'fastidioso quando voglio passare facilmente alcune classi da altri moduli che si basano su qualche hardware esterno. Naturalmente posso solo aggiungere un nuovo profilo dal nulla solo per risolvere questo problema.
Comunque sto cercando un modo più generico per gestirlo, non voglio finire nel brodo di un profilo che è stato appena creato perché "Ne ho bisogno in quel momento". Dovrei creare un profilo dev-xxx / prod-xxx per ogni modulo, o ci sono migliori best-practice su questo?
Ecco alcune informazioni su come il mio progetto è attualmente organizzato, questo ti darà un'idea di ciò che ho attualmente. Ma non è necessario tenerne conto nella risposta
Il mio stack completo per il server: PostgreSQL, Hibernate, JPA, Spring + Spring-Security, CXF (fornisce implementazione JAX-RS e molte funzionalità come motore di ricerca FIQL), WebSockets, Jackson (json serializer)
Ecco come sono attualmente organizzati i miei moduli, non sto cercando necessariamente una risposta che corrisponda precisamente a ciò che ho, ma ti dà un'idea:
- Core: contiene al momento tutte le Entità, i servizi aziendali e la gestione dei diritti. Non uso oggetti DTO quindi tutte le annotazioni da JPA / Jackson sono sulle entità (36 tabelle nel database).
- Rest-Common: contiene alcune configurazioni predefinite (jackson mapper, fornitore jackson jax-rs).
- RestCore: espone tutti i servizi al mondo web, fornisce un servizio di ricerca che si affida al modulo di ricerca JAX-RS di CXF. Gli URL sono protetti con sicurezza di primavera in base ai diritti semplici, ulteriori verifiche vengono eseguite in Business Service.
- RestReader: esporre un insieme di URL diversi per la sincronizzazione con un lettore mobile. Quelli non sono fatti per essere usati da un browser.
- 2 altri moduli indipendenti che implementano solo la loro parte tecnica.
Nota: so che posso avere un profilo intermedio di ambiente di integrazione e così via, sono pianificati, ma sto facendo una corsa di 2-3 settimane per ogni funzionalità che non sono realmente specificate o progettate prima mano , quindi ho pochissimo tempo per pulire il mio intero processo di compilazione, per un'analisi completa, per la progettazione e così via. Quindi potrei essere interessato ad alcune risposte per il futuro che non sarò in grado di implementare al momento.