Domanda

Attualmente sto cercando di entrare nello sviluppo Java EE con il framework Spring.Dato che sono nuovo alla primavera, è difficile immaginare come dovrebbe iniziare un buon progetto in corso.

Hai qualche migliori pratiche, suggerimenti o maggiore NON FARE per cominciare?Come hai iniziato con Spring: grandi progetti o piccole applicazioni simili a tutorial?Quale tecnologia hai utilizzato subito:AOP, ibernazione complessa...

È stato utile?

Soluzione

Piccolo suggerimento: ho trovato utile modularizzare ed etichettare chiaramente i miei file di contesto Spring xml in base alle preoccupazioni dell'applicazione.Ecco un esempio di un'app Web su cui ho lavorato:

  • MyProject / src / main / resources / spring /
    • origine dati.xml - Il mio bean di origine dati singolo.
    • persistenza.xml - I miei DAO/repository.Dipende da datasource.xml fagioli.
    • services.xml - Implementazioni del livello di servizio.Di solito questi sono i bean a cui applico la transazionalità utilizzando AOP.Dipende da persistence.xml fagioli.
    • controllers.xml - I miei controller Spring MVC.Dipende da services.xml fagioli.
    • visualizzazioni.xml - Le mie implementazioni di visualizzazione.

Questo elenco non è né perfetto né esaustivo, ma spero che illustri il punto.Scegli la strategia di denominazione e la granularità più adatte a te.

Nella mia (limitata) esperienza, ho visto che questo approccio produce i seguenti vantaggi:

Architettura più chiara

I file di contesto chiaramente nominati danno a coloro che non hanno familiarità con la struttura del progetto un luogo ragionevole per iniziare a cercare definizioni di fagioli.Può rendere un po' più semplice il rilevamento delle dipendenze circolari/indesiderate.

Aiuta la progettazione del dominio

Se vuoi aggiungere una definizione di bean, ma non si adatta bene a nessuno dei tuoi file di contesto, forse sta emergendo un nuovo concetto o preoccupazione?Esempi:

  • Supponiamo che tu voglia rendere transazionale il tuo livello di servizio con AOP.Aggiungi quelle definizioni di bean a services.xml, o inserirli da soli transactionPolicy.xml?Parlane con la tua squadra.La tua politica di transazione dovrebbe essere collegabile?
  • Aggiungi i bean Acegi/Spring Security al tuo controllers.xml file o creare un file security.xml file di contesto?Hai requisiti di sicurezza diversi per distribuzioni/ambienti diversi?

Test d'integrazione

Puoi collegare un sottoinsieme della tua applicazione per il test di integrazione (es:dati i file sopra, per testare il database è necessario creare solo datasource.xml E persistence.xml fagioli).

Nello specifico, puoi annotare una classe di test di integrazione come tale:

@ContextConfiguration(locations = { "/spring/datasource.xml" , "/spring/persistence.xml" })

Funziona bene con il grafico Beans di Spring IDE

Avere molti file di contesto mirati e ben denominati semplifica la creazione di BeansConfigSet personalizzati per visualizzare i livelli della tua app utilizzando l'IDE Spring Grafico dei fagioli.L'ho già usato in passato per offrire ai nuovi membri del team una panoramica di alto livello dell'organizzazione della nostra applicazione.

Altri suggerimenti

Concentratevi prima sul cuore della Primavera:Iniezione di dipendenza.Una volta che hai visto tutti i modi in cui è possibile utilizzare DI, inizia a pensare ai pezzi più interessanti come AOP, Remoting, modelli JDBC ecc.Quindi il mio miglior consiglio è di lasciare che il tuo uso della Primavera cresca dal profondo.

La migliore pratica?Se stai utilizzando la configurazione XML standard, gestisci la dimensione dei singoli file e commentali con giudizio.Potresti pensare che tu e gli altri comprenderete perfettamente le vostre definizioni di bean, ma in pratica è un po' più difficile tornare ad esse rispetto al semplice vecchio codice Java.

Buona fortuna!

Prima di tutto Spring riguarda la modularità e funziona meglio se ci si concentra sulla scrittura di piccoli componenti che fanno una cosa e la fanno bene.

Se segui le migliori pratiche in generale come:

  • Definire un'interfaccia piuttosto che classi astratte
  • Rendere i tipi immutabili
  • Mantieni le dipendenze il meno possibile per una singola classe.
  • Ogni classe dovrebbe fare una cosa e farla bene.Le grandi classi monolitiche fanno schifo, sono difficili da testare e da usare.

Se i tuoi componenti sono piccoli e seguono i dogmi di cui sopra, dovrebbero essere facili da collegare e giocare con altre cose.Quanto sopra vale naturalmente anche per lo stesso quadro di primavera.

PS

Non ascoltare i punti sopra, stanno parlando di come fare qualsiasi cosa.È più importante imparare a pensare piuttosto che a fare qualcosa.Gli esseri umani possono pensare, ripetere qualcosa non è intelligente, pensare lo è.

In realtà mi è piaciuta parecchio la primavera..Era una fresca brezza d'aria nei Java Beans J2EE medi..

Consiglio di implementare l'esempio fornito da Spring:

http://static.springframework.org/docs/Spring-MVC-step-by-step/

Inoltre, ho deciso di passare a Full Monty e ho aggiunto Hibernate alla mia applicazione Spring ;), perché Spring fornisce un eccellente supporto per Hibernate...:)

Tuttavia ho una cosa da NON FARE, che ho imparato a mie spese (prodotto in produzione)...Se implementi solo l'interfaccia Controller e restituisci un oggetto ModelAndView con alcuni dati forniti con l'interfaccia, Spring raccoglie in modo errato tali risorse, poiché tenta di memorizzare nella cache tali dati.Quindi fai attenzione a inserire dati di grandi dimensioni in quegli oggetti ModelAndView, perché occuperanno la memoria del tuo server per tutto il tempo in cui il server sarà in volo non appena la pagina sarà stata visualizzata...

Inizia da qui: in realtà penso che sia tra i migliori libri sullo sviluppo di software che abbia mai letto.
Esperto Spring MVC e flusso web

Scopri la nuova configurazione basata su annotazioni per le classi MVC.Questo fa parte della primavera 2.5.L'uso di classi basate su annotazioni renderà la scrittura di unit test molto più semplice.Anche poter ridurre la quantità di XML è una buona cosa.

Oh sì Unit Test: se usi Spring, è MEGLIO essere Unit Testing.:) Scrivi test unitari per tutte le classi Web e Service Layer.

Informati sulla progettazione basata sul dominio.Il fatto che tu possa utilizzare le classi di oggetti di dominio a tutti i livelli di un'applicazione Spring significa che avrai un modello di dominio MOLTO potente.Sfruttalo.

Tuttavia, quando utilizzi le classi Domain Object per la popolazione dei moduli, ti consigliamo di prestare attenzione ai recenti problemi di sicurezza relativi a Spring Framework. Una discussione sul lato server rivela il modo per chiudere il buco nei commenti.

Un buon modo per iniziare è concentrarsi sul "quadro di primavera".Il portfolio di Spring è cresciuto fino a raggiungere una grande quantità di progetti su vari aspetti del software aziendale.All'inizio attieniti al nocciolo della questione e cerca di afferrare i concetti. Scaricamento i file binari più recenti e controlla l'esempio della clinica veterinaria di Spring una volta acquisita familiarità con il core.Fornisce una panoramica abbastanza buona dei vari progetti che SpringSource ha da offrire.

Sebbene la documentazione sia molto buona, Consiglierei un libro dopo aver afferrato i concetti fondamentali.Ciò che ho trovato problematico con la documentazione è che non è approfondita e non può fornirti tutti i dettagli di cui hai bisogno.

"...Quale tecnologia hai utilizzato subito:AOP, Hibernate complesso..." - Direi che una domanda migliore sarebbe chiedere cosa le persone non hanno usato subito.Aggiungerei gli esempi che citi a quell'elenco.

I modelli Spring MVC e JDBC sarebbero i miei consigli iniziali.Puoi fare molta strada solo con quelli.

La mia raccomandazione sarebbe quella di seguire fedelmente le raccomandazioni architettoniche di primavera.Usa le loro idee di stratificazione.Assicurati che il tuo livello web sia completamente staccabile dal resto.A tale scopo, consenti al livello Web di interagire con il back-end solo tramite il livello di servizio.

Se si desidera riutilizzare tale livello di servizio, un buon consiglio è quello di esporlo utilizzando i servizi Web Spring "contract first".Se inizi con i messaggi XML che passi avanti e indietro, il tuo client e il tuo server possono essere completamente disaccoppiati.

L'IDE con il miglior supporto Spring è IntelliJ.Vale la pena spendere qualche soldo.

Anche se sono anni che non utilizzo Spring e non posso dire di esserne un fan, so che lo strumento App Fuse (https://java.net/projects/appfuse/) è stato utile per aiutare le persone a eseguire il bootstrap in termini di generazione di tutti gli artefatti necessari per iniziare.

La primavera riguarda anche i test unitari e quindi la testabilità delle tue classi.Ciò significa fondamentalmente pensare alla modularizzazione, alla separazione delle preoccupazioni, al riferimento a una classe tramite interfacce, ecc.

Se vuoi solo dilettarti un po' e vedere se ti piace, ti consiglio di iniziare con il livello DAO, utilizzando il supporto JDBC e/o Hibernate di Spring.Ciò ti esporrà a molti dei concetti fondamentali, ma fallo in un modo che sia facile da isolare dal resto della tua app.Questo è il percorso che ho seguito ed è stato un buon riscaldamento prima di iniziare a creare un'applicazione completa con Spring.

Con il rilascio di Spring 2.5 e 3.0, penso che una delle migliori pratiche più importanti da sfruttare ora siano le annotazioni Spring.Le annotazioni per controller, servizi e repository possono farti risparmiare un sacco di tempo, consentirti di concentrarti sulla logica aziendale della tua app e potenzialmente puoi rendere tutti i tuoi oggetti semplici vecchi oggetti Java (POJO).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top