java Per cosa è esattamente il Framework di primavera?





8 Answers

La primavera contiene ( come ha giustamente sottolineato Skaffman ) una struttura MVC. Per spiegare in breve ecco i miei input. Spring supporta la segregazione del livello di servizio, del livello Web e del livello aziendale, ma ciò che realmente fa meglio è "l'iniezione" di oggetti. Quindi per spiegare che con un esempio si consideri l'esempio di seguito:

public interface FourWheel
{
   public void drive();
}

public class Sedan implements FourWheel
{
   public void drive()
   {
      //drive gracefully
   }
}

public class SUV implements FourWheel
{
   public void drive()
   {
      //Rule the rough terrain
   }
}

Ora nel tuo codice hai una classe chiamata RoadTrip come segue

public class RoadTrip
{
    private FourWheel myCarForTrip;
}

Ora ogni volta che vuoi un'istanza di Trip; a volte potresti volere un SUV per inizializzare FourWheel o, a volte, potresti voler berlina. Dipende molto da ciò che vuoi in base alla situazione specifica.

Per risolvere questo problema, si vorrebbe avere un modello di fabbrica come modello creativo. Dove una fabbrica restituisce l'istanza giusta. Quindi alla fine ti ritroverai con un sacco di codice di colla solo per istanziare correttamente gli oggetti. Spring fa il lavoro del codice colla migliore senza quel codice colla. Si dichiarano i mapping in XML e vengono inizializzati automaticamente gli oggetti. Fa anche molto usando l'architettura singleton per le istanze e questo aiuta nell'ottimizzazione dell'uso della memoria.

Questo è anche chiamato Inversion Of Control. Altri framework per fare questo sono Google guice, Pico container ecc.

Oltre a questo, Spring ha framework di validazione, ampio supporto per layer DAO in collaborazione con JDBC, iBatis e Hibernate (e molti altri). Fornisce un eccellente controllo transazionale sulle transazioni del database.

C'è molto di più in primavera che può essere letto in buoni libri come "Pro Spring".

Anche gli URL seguenti potrebbero essere di aiuto.
http://static.springframework.org/docs/Spring-MVC-step-by-step/
http://en.wikipedia.org/wiki/Spring_Framework
http://www.theserverside.com/tt/articles/article.tss?l=SpringFramework

java spring web web-applications frameworks

Ho sentito parlare molto di Spring , la gente dice in tutto il web che Spring è un buon framework per lo sviluppo web. Per cosa è esattamente il Framework di primavera?




A cosa serve la primavera? Risponderò a breve a questa domanda, ma prima, diamo un'altra occhiata all'esempio di Victor Hugo. Non è un grande esempio perché non giustifica la necessità di un nuovo framework.

public class BaseView {
  protected UserLister userLister;

  public BaseView() {
    userLister = new UserListerDB(); // only line of code that needs changing
  }
}

public class SomeView extends BaseView {
  public SomeView() {
    super();
  }

  public void render() {
    List<User> users = userLister.getUsers();
    view.render(users);
  }
}

Fatto! Quindi ora anche se hai centinaia o migliaia di visualizzazioni, devi solo cambiare la riga di codice, come nell'approccio XML di Spring. Ma cambiare una riga di codice richiede ancora la ricompilazione piuttosto che la modifica di XML che dici? Bene, amico mio, usa Ant e script!

Allora, a cosa serve la primavera? È per:

  1. Sviluppatori ciechi che seguono la mandria
  2. I datori di lavoro che non vogliono mai assumere programmatori laureati perché non insegnano tali quadri a Uni
  3. Progetti che hanno avuto un cattivo design e hanno bisogno di patchwork (come dimostra l'esempio di Victor Hugo)

Ulteriori letture: http://discuss.joelonsoftware.com/?joel.3.219431.12




La primavera è tre cose.

  1. Le maniglie di primavera Dipendenza da iniezione e vi consiglio di leggere l'eccellente introduzione di Martin Fowler sull'iniezione di dipendenza.
  2. La seconda cosa che Spring fa è racchiudere eccellenti librerie Java in un modo molto elegante da usare nelle tue applicazioni. Per un buon esempio, vedere come Spring esegue il wrapping dei Task Executors e del Quartz Scheduler.
  3. In terzo luogo, Spring fornisce una serie di implementazioni di elementi web come REST, un framework Web MVC e altro ancora. Capiscono dal momento che stai usando Spring per i primi due, forse puoi semplicemente usarlo per tutto ciò di cui la tua app web ha bisogno.

Il problema è che Spring DI è davvero ben congegnata, i wrapper attorno ad altre cose sono davvero ben pensati in quanto le altre cose hanno pensato a tutto e Spring lo avvolge piacevolmente. Le implementazioni Spring di MVC e REST e tutte le altre cose non sono altrettanto ben fatte (YMMV, IMHO) ma ci sono delle eccezioni (Spring Security è da bomba). Quindi tendo a usare Spring per DI, e i suoi involucri freddi ma preferisco altre cose per il Web (mi piace molto Tapestry), REST (Jersey è davvero robusto), ecc.




Vedo due parti per questo:

  1. "Che cosa è esattamente Spring per" -> vedere la risposta accettata da Victor Hugo.
  2. "[...] La primavera è [un] buon framework per lo sviluppo del web" -> persone che dicono che stanno parlando di Spring MVC. Spring MVC è una delle tante parti di Spring, ed è un framework web che sfrutta le caratteristiche generali di Spring, come l'iniezione di dipendenza. È un framework piuttosto generico in quanto è molto configurabile: puoi usare diversi livelli db (Hibernate, iBatis, plain JDBC), diversi livelli di visualizzazione (JSP, Velocity, Freemarker ...)

Nota che puoi usare perfettamente Spring in un'applicazione web senza usare Spring MVC. Direi che la maggior parte delle applicazioni web Java fa questo, mentre usa altri framework web come Wicket, Struts, Seam, ...




La risposta accettata non implica l'utilizzo delle annotazioni poiché Spring ha introdotto il supporto per varie annotazioni per la configurazione.

Approccio Spring (Dependency Injection)

C'è un altro modo per legare le classi insieme usando un file XML: le annotazioni. Usiamo l'esempio dalla risposta accettata e registriamo il bean direttamente sulla classe utilizzando una delle annotazioni @Component , @Service , @Repository o @Configuration :

@Component
public class UserListerDB implements UserLister {
    public List<User> getUsers() {
        // DB access code here
    }
}

In questo modo, quando viene creata la vista, magicamente avrà un UserLister pronto a funzionare.

La dichiarazione di cui sopra è valida con un piccolo bonus che non richiede l'utilizzo di file XML e il cablaggio con un'altra annotazione @Autowired che trova un'implementazione rilevante e la inietta.

@Autowired
private UserLister userLister;

Utilizzare l'annotazione @Bean su un metodo utilizzato per ottenere l'implementazione del bean da iniettare.




Spring è una buona alternativa alla tecnologia EJB (Enterprise JavaBeans) . Ha anche componenti del framework web e dei servizi web.




La primavera è stata un'iniezione di dipendenza all'inizio, quindi aggiungere re di wrapper per quasi tutto (wrapper su implementazioni JPA, ecc.).

Lunga storia ... gran parte delle soluzioni XML di Spring preffer (motore di scripting XML ... brrrr), quindi per DI uso Guice

Una buona libreria, ma con la crescente depnedenciec, ad esempio Spring JDBC (forse una soluzione jdbc Java con parametri di nomi reali) prende da Maven 4-5 avanti.

Usando Spring MVC (parte di "big spring") per lo sviluppo web ... è un framework "request based", c'è una guerra santa "request vs component" ... fino a te




In passato pensavo alla struttura di Spring dal punto di vista puramente tecnico.

Data una certa esperienza nel lavoro di squadra e nello sviluppo di applicazioni Web aziendali, direi che Spring è per lo sviluppo più rapido di applicazioni (applicazioni web) disaccoppiando i suoi singoli elementi (bean). Lo sviluppo più veloce lo rende così popolare. La primavera consente di spostare la responsabilità di costruire (cablare) l'applicazione sul framework Spring. L' iniezione di dipendenza del framework Spring è responsabile della connessione / cablaggio di singoli bean in un'applicazione funzionante.

In questo modo gli sviluppatori possono concentrarsi maggiormente sullo sviluppo di singoli componenti (bean) non appena vengono definite le interfacce tra i bean.

Testare un'applicazione di questo tipo è facile: l'obiettivo principale è dato ai singoli fagioli. Possono essere facilmente disaccoppiati e derisi, quindi i test unitari sono rapidi ed efficienti.

Il framework Spring definisce più bean specializzati come @Controller ( @Restcontroller ), @Repository , @Component per scopi web. Spring insieme a Maven forniscono una struttura intuitiva per gli sviluppatori. Il lavoro di squadra è facile e veloce poiché i singoli elementi vengono tenuti separati e possono essere riutilizzati.




Related