Penso di poter prendere una crepa alla domanda, anche se non sono sicuro che qualsiasi risposta sarà soddisfacente.
La risposta più semplice è che la primavera è una combinazione di tecnologie:
- iniezione di dipendenza, che utilizza il principio di Hollywood per aiutare a mantenere l'interfaccia e l'implementazione separata;
- programmazione orientata all'aspetto, che isola i problemi trasversali in moduli che è possibile applicare in modo dichiarativo. Il "ciao mondo" di AOP sta registrando, ma è tutto su Spring (ad esempio transazioni, proxy dinamici per servizi remoti, sicurezza, ecc.). Pensate ai filtri servlet e avrete l'idea;
- librerie per aiutare con compiti comuni come persistenza (JDBC, Hibernate, iBatis, JDO, JPA, ecc.), Remoting (RMI, HTTP, servizi Web), asynch messaging (POJOs guidati dai messaggi), validazione e binding, web MVC (Spring or Struts), utilità come e-mail, pianificazione, sicurezza, ecc.
Ma la risposta più profonda è che si ottiene il beneficio dell'esperienza di Rod Johnson come consulente su progetti Java EE. Ha distillato ciò che ha funzionato per lui nei suoi concerti in Interface 21/Spring, e ora puoi avere il vantaggio di tutto ciò gratuitamente.
Il team Spring scrive codice che è stato progettato, testato e segue gli standard in modo più rigoroso di qualsiasi altro che scriverò mai. (Immaginate Juergen Hoeller che abbaia Rod Johnson perché il suo codice non ha rispettato lo standard prima del check-in.) Posso contare sul loro codice quadro quando lo uso e mi concentro sul mio problema aziendale. Non scrivo più e più volte il codice della piastra della caldaia.
Per me, Spring è più un modello architettonico che funge da guida per la creazione di applicazioni Web.Alcune persone potrebbero dire che è troppo ingegnerizzato, e per alcuni problemi sono corretti, ma per il tipo di problemi con cui mi trovo di fronte regolarmente Spring è solo un biglietto.
Per quanto riguarda i subquestions:
Quali vantaggi cosa abbiamo quando si utilizza quadri iniezione di dipendenza?
Gli oggetti non devono essere responsabili della gestione delle loro dipendenze. Il contesto applicativo di Spring è in realtà solo un grande Factory Pattern del GoF. Ti incoraggia a progettare un'interfaccia in modo da poter modificare l'implementazione secondo necessità. La tua interfaccia di persistenza potrebbe utilizzare un'implementazione JDBC oggi, Hibernate domani; potresti decidere di generare automaticamente un proxy per gestire il suo comportamento transazionale. Nessuno codice client deve essere modificato se si esegue il codice su un'interfaccia.
L'idea di descrivere classi con valori setter e/o parametri di costruzione mi sembra strana. Perché farlo? Perché possiamo modificare le proprietà senza ricompilare il progetto ? È tutto ciò che otteniamo?
Strano? Non usi proprietà o costruttori nel tuo codice? Lo fai perché è così che viene scritta la maggior parte delle classi Java. Spring usa semplicemente quei meccanismi come un modo per fornire dipendenze alla classe.
Quindi, quali oggetti dovremmo descrivere in beans.xml? Tutti gli oggetti o solo alcuni?
Solo i bean con dipendenze. Io chiamo ancora "nuovo" per oggetti che sono locali per un particolare metodo. Vengono creati, utilizzati e raccolti nella portata del metodo. Questi non devono essere sotto il controllo di Spring.
Quindi quello che stai cercando è un articolo sull'argomento, non una risposta SO. – Bozho
Non sto cercando un articolo sull'argomento QUANTO HO GIÀ PROVATO I MIGLIORI LIBRI pubblicati sull'argomento. Voglio conoscere l'opinione di chi lo usa nel lavoro di tutti i giorni. – EugeneP
Bene, funziona. –