A cosa serve esattamente Spring Framework? [chiuso]


623

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


10
Capisco che la domanda è molto ampia, ma penso che in questo caso molto specifico la domanda sia molto importante per gli sviluppatori di junion che spesso parlano di Spring da parte di persone che presumono che sia abbastanza popolare che non c'è nemmeno bisogno di dire cosa lo fa. Dopotutto, alza la mano se non hai mai sentito parlare di Instagram e quale sia il suo scopo .... (confessione: non ho mai usato Insta)
usr-local-ΕΨΗΕΛΩΝ

2
La domanda è stata posta 10 anni fa, e in quel momento la primavera era un po 'più piccola di adesso con tutti i suoi sottoprogetti, come Spring Boot, Spring Data, Spring Rest, ecc. Ed effettivamente è per questo che è stata più vicina un anno fa, a causa di l'ampiezza di questa domanda. Al momento in cui ho posto questa domanda volevo solo capire DI e perché è necessario.
Maksim,

Risposte:


713

Fondamentalmente la primavera è un quadro per che è un modello che consente di costruire sistemi molto disaccoppiati.

Il problema

Ad esempio, supponiamo di dover elencare gli utenti del sistema e quindi dichiarare un'interfaccia chiamata UserLister:

public interface UserLister {
    List<User> getUsers();
}

E forse un'implementazione che accede a un database per ottenere tutti gli utenti:

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

A tuo avviso dovrai accedere a un'istanza (solo un esempio, ricorda):

public class SomeView {
    private UserLister userLister;

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

Si noti che il codice sopra non ha inizializzato la variabile userLister. Cosa dovremmo fare? Se istanzio esplicitamente l'oggetto in questo modo:

UserLister userLister = new UserListerDB();

... Abbinerei la vista alla mia implementazione della classe che accede al DB. E se volessi passare dall'implementazione del DB a un altro che ottiene l'elenco utenti da un file separato da virgole (ricorda, è un esempio)? In tal caso, tornerei al mio codice e cambierei la riga sopra in:

UserLister userLister = new UserListerCommaSeparatedFile();

Questo non ha alcun problema con un piccolo programma come questo ma ... Cosa succede in un programma che ha centinaia di visualizzazioni e un numero simile di business class? La manutenzione diventa un incubo!

Approccio di primavera (iniezione di dipendenza)

Ciò che Spring fa è collegare le classi utilizzando un file XML o annotazioni, in questo modo tutti gli oggetti vengono istanziati e inizializzati da Spring e iniettati nei posti giusti (Servlet, Web Frame, Business class, DAO, ecc., Ecc., Ecc. ...).

Tornando all'esempio in primavera, dobbiamo solo avere un setter per il userListercampo e avere un file XML come questo:

<bean id="userLister" class="UserListerDB" />

<bean class="SomeView">
    <property name="userLister" ref="userLister" />
</bean>

o più semplicemente annota l'archivio nella nostra classe di visualizzazione con @Inject:

@Inject
private UserLister userLister;

In questo modo, quando la vista viene creata magicamente, sarà UserListerpronta per funzionare.

List<User> users = userLister.getUsers();  // This will actually work
                                           // without adding any line of code

È grande! No?

  • Cosa succede se si desidera utilizzare un'altra implementazione della propria UserListerinterfaccia? Basta cambiare l'XML.
  • E se non fosse UserListerpronta un'implementazione? Programmare un'implementazione fittizia temporale UserListere facilitare lo sviluppo della vista.
  • E se non volessi più usare Spring? Basta non usarlo! L'applicazione non è accoppiata ad essa. Inversione del controllo afferma: "L'applicazione controlla il framework, non il framework controlla l'applicazione".

Ci sono altre opzioni per Dependency Injection lì intorno, ciò che secondo me ha reso Spring così famosa oltre alla sua semplicità, eleganza e stabilità è che i ragazzi di SpringSource hanno programmato molti POJO che aiutano a integrare Spring con molti altri framework comuni senza essere invadente nella tua applicazione. Inoltre, Spring ha molti buoni sottoprogetti come Spring MVC, Spring WebFlow, Spring Security e ancora una lista di eccipienti.

Spero che sia di aiuto. Ad ogni modo, ti incoraggio a leggere l'articolo di Martin Fowler su Iniezione di dipendenza e Inversione di controllo perché lo fa meglio di me. Dopo aver compreso le nozioni di base, dai un'occhiata alla documentazione di primavera , secondo me, è usato per essere il miglior libro di primavera di sempre.


148
Qual è la differenza tra dover cambiare una riga di codice e una riga di XML? Lo sforzo e l'inferno di manutenzione sono esattamente gli stessi, o anche peggio, dal momento che i file XML esterni aggiungono probabilmente complessità? Scusa ma non capisco, non vedo alcun beneficio. Per favore, compilami se mi manca qualcosa.
fred, il

23
@fred - Immagina di fare test unitari. Senza l'iniezione delle dipendenze (DI può essere usato con le annotazioni o con XML) non puoi testarlo correttamente, perché non puoi deridere le dipendenze.
Petar Minchev,

18
@fred - la definizione di tutta l'iniezione in XML ha davvero poco senso. È un enorme sovraccarico da mantenere. Pertanto, EJB ha introdotto il concetto di annotazioni per i punti di iniezione. Sono molto più semplici e verrà iniettata un'istanza predefinita (per i test unitari questa può essere cambiata una volta). Questo ha funzionato così bene che Spring ha ora copiato questo approccio. Si noti che se necessario (ma solo se realmente necessario) le annotazioni possono ancora essere sostituite da XML in EJB.
Mike Braun,

36
Oppure, sai, usa un metodo statico di fabbrica. Cambia il tipo restituito dal factory e ora tutte le classi che usano quel valore restituito sono cambiate. La primavera di Presto non è più necessaria ...
Qix - MONICA È STATA MISTREATA il

16
@mmcrae Preferirei fare una chiamata di rifattorizzazione nel mio IDE piuttosto che scrivere XML.
Qix - MONICA È STATA MISTREATA il

63

Spring contiene ( come giustamente Skaffman ha sottolineato ) un framework MVC. Per spiegare in breve ecco i miei input. Spring supporta la separazione del livello di servizio, del livello Web e del livello aziendale, ma ciò che fa davvero meglio è "l'iniezione" di oggetti. Quindi, per spiegare che con un esempio considera l'esempio seguente:

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 volere Berlina. Dipende davvero da cosa vuoi in base alla situazione specifica.

Per risolvere questo problema, dovresti avere un modello di fabbrica come modello di creazione. Dove una fabbrica restituisce l'istanza giusta. Quindi alla fine finirai con un sacco di codice colla solo per istanziare correttamente gli oggetti. La primavera fa il meglio del codice colla senza quel codice colla. Dichiarate i mapping in XML e inizializza automaticamente gli oggetti. Funziona molto anche usando l'architettura singleton per istanze e ciò aiuta a ottimizzare l'utilizzo della memoria.

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

A parte questo, Spring ha un framework di validazione, ampio supporto per il livello 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 Spring che può essere letto in buoni libri come "Pro Spring".

Anche i seguenti URL possono 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 = Spring Framework


5
Spring contiene un framework MVC. Ma è molto, molto di più.
Skaffman,

Senza voler troppo nitpick, WebMVC fa parte della distribuzione di primavera core. Webflow, RCP e altri non lo sono.
Skaffman,

1
Bello, non sapevo che puoi istanziare oggetti di tipo Interfaccia in Java - che è illegale @skaffman aiutami a capire questa risposta (vedi Istanza di FourWheel)
Jossie Calderon,

47

Ai vecchi tempi, Spring era un frame di iniezione delle dipendenze che funzionava solo come ( Guice , PicoContainer , ...), ma al giorno d'oggi è una soluzione totale per la creazione della tua applicazione aziendale .

L'iniezione di dipendenza primaverile, che è, ovviamente, il cuore della primavera è ancora lì (e puoi rivedere altre buone risposte qui), ma ce ne sono altre dalla primavera ...

La primavera ha ora molti progetti, ognuno con alcuni sottoprogetti ( http://spring.io/projects ). Quando qualcuno parla della primavera, devi scoprire di quale progetto primaverile sta parlando, è solo il nucleo primaverile, che è noto come quadro di primavera , o è un altro progetto primaverile.

Alcuni progetti primaverili che meritano di essere menzionati sono:

Se hai bisogno di alcune funzionalità più specifiche per la tua applicazione, potresti trovarle anche lì:

  • Framework batch di Spring Batch progettato per consentire lo sviluppo di
    applicazioni batch
  • Primavera HATEOAS facile creazione dell'API REST basata sul principio HATEOAS
  • Spring Mobile e Spring Andriod per lo sviluppo di applicazioni mobili
  • Spring Shell crea un'applicazione shell completa (nota anche come riga di comando)
  • Spring Cloud e Spring Cloud Data Flow per applicazioni cloud

Ci sono anche alcuni piccoli progetti lì per esempio primavera-social-facebook ( http://projects.spring.io/spring-social-facebook/ )

Puoi usare spring per lo sviluppo web in quanto ha il Spring MVCmodulo che fa parte del progetto Spring Framework . Oppure puoi usare spring con un altro framework web, come struts2 .


1
In realtà mi piacerebbe vedere mvc, dati, jpa e altre parti di Spring avere un'opzione per non usare il core DI di Spring, ma invece mettere Dagger nel cuore di Spring.
dlamblin,

25

A cosa serve la primavera? Risponderò a breve a questa domanda, ma prima diamo un'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 una riga di codice, come nell'approccio Spring XML. Ma cambiare una riga di codice richiede ancora la ricompilazione invece di modificare l'XML che dici? Bene amico mio pignolo, usa Ant e lo script via!

Allora, a cosa serve la primavera? È per:

  1. Sviluppatori ciechi che seguono il branco
  2. I datori di lavoro che non vogliono mai assumere programmatori laureati perché non insegnano tali quadri in Uni
  3. Progetti che sono partiti con una cattiva progettazione e necessitano di patchwork (come mostrato nell'esempio di victor hugo)

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


11
Frustrazione a parte, mi chiedo quali siano le tue argomentazioni. Non conosco alcun strumento di programmazione che non puoi usare per produrre cattivi progetti. Quello a cui miri è che usando i framework puoi fare del cattivo codice fare un sacco di cose. È universalmente vero e non specifico per la primavera. Altrimenti qual è il punto? Non pensate che gli sviluppatori competenti possano fare un grande uso di ciò che Spring ha da offrire, in particolare in quali strumenti del framework usano? Almeno sono abbastanza certo che non sottintendi che nessuno sviluppatore di Spring abbia mai sentito parlare di estensioni delle classi. L'ulteriore lettura è divertente, però.
sthzg,

2
Inoltre, il tuo esempio funziona perché la vista necessita di un solo servizio iniettato ( UserLister), ma cosa succede se ha bisogno di più servizi, non condivisi tra i diversi BaseViewfigli? Non c'è (fortunatamente) nessuna eredità multipla in Java.
Edouard Berthe,

@EdouardBerthe Fair point. La mia risposta non è stata un tentativo di ignorare DI, indica semplicemente che l'esempio mostrato nella risposta accettata non è il massimo; lo scenario che stai proponendo molto probabilmente funzionerebbe meglio. Il punto che stavo davvero cercando di sottolineare non è che non hai bisogno di DI, ma piuttosto non hai bisogno di un intero framework per farlo.
Ash

19

In breve, dirò che la primavera è la "colla" nella tua applicazione. È utilizzato per integrare diversi framework e il tuo codice.


15

La primavera è tre cose.

  1. Spring gestisce l'iniezione di dipendenza e vi consiglio di leggere l'eccellente introduzione di Martin Fowler sull'iniezione di dipendenza.
  2. La seconda cosa che Spring fa è avvolgere eccellenti librerie Java in un modo molto elegante da usare nelle tue applicazioni. Per un buon esempio, vedi come Spring avvolge Task Executors e Quartz Scheduler.
  3. In terzo luogo, Spring fornisce una serie di implementazioni di elementi Web come REST, un framework Web MVC e altro. 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 congegnato, gli involucri intorno ad altre cose sono davvero ben pensati in quanto le altre cose hanno pensato a tutto e Spring lo ha avvolto bene. Le implementazioni Spring di MVC e REST e tutte le altre cose non sono così ben fatte (YMMV, IMHO) ma ci sono eccezioni (Spring Security è da bombe). Quindi tendo a usare Spring per DI e i suoi fantastici wrapper ma preferisco altre cose per il Web (mi piace molto Tapestry), REST (Jersey è davvero robusto), ecc.


9
YMMV, IMHO - Il tuo chilometraggio può variare, secondo il mio modesto parere, per quelli di voi che non parlano correntemente abbreviazioni come me ...
Sakamoto Kazuma,

11

Cosa vorresti probabilmente in un'applicazione web con Spring -

  • Spring MVC, che con 2.5+ ti consente di utilizzare POJO come classi Controller, il che significa che non devi estenderti da alcun framework particolare (come in Struts o Spring pre-2.5). Anche le classi di controller sono semplici da testare, in parte grazie all'iniezione di dipendenze
  • Integrazione primaverile con Hibernate, che fa un buon lavoro nel semplificare il lavoro con quella soluzione ORM (nella maggior parte dei casi)
  • L'uso di Spring per un'app Web ti consente di utilizzare i tuoi oggetti di dominio a tutti i livelli dell'applicazione: le stesse classi mappate utilizzando Hibernate sono le classi che utilizzi come "bean di modulo". Per natura, questo porterà a un modello di dominio più solido, in parte perché ridurrà il numero di classi.
  • I tag dei moduli di primavera semplificano la creazione di moduli senza troppi problemi.

Inoltre, Spring è ENORME - quindi ci sono molte altre cose che potresti essere interessato a utilizzare in un'app Web come Spring AOP o Spring Security. Ma le quattro cose sopra elencate descrivono i componenti comuni di Spring utilizzati in un'app Web.


9

Vedo due parti per questo:

  1. "Che cosa è esattamente la primavera per" -> vedi la risposta accettata da victor hugo.
  2. "[...] Spring è [un] buon framework per lo sviluppo web" -> le persone che affermano che stanno parlando di Spring MVC. Spring MVC è una delle molte parti di Spring ed è un framework Web che utilizza le funzionalità generali di Spring, come l'iniezione di dipendenza. È un framework piuttosto generico in quanto è molto configurabile: puoi usare diversi livelli db (Hibernate, iBatis, JDBC normale), diversi livelli di visualizzazione (JSP, Velocity, Freemarker ...)

Si noti che è possibile utilizzare perfettamente Spring in un'applicazione Web senza utilizzare Spring MVC. Direi che la maggior parte delle applicazioni web Java lo fa, mentre usa altri framework web come Wicket, Struts, Seam, ...


8

La primavera è ottima per incollare insieme esempi di classi. Sai che le tue classi Hibernate avranno sempre bisogno di un'origine dati, Spring le collega insieme (e ha anche un'implementazione dell'origine dati).

I tuoi oggetti di accesso ai dati avranno sempre bisogno dell'accesso di ibernazione, Spring collega le classi di ibernazione nei tuoi DAO per te.

Inoltre, Spring ti offre fondamentalmente configurazioni solide di un gruppo di librerie e, in questo, ti guida in quali librerie dovresti usare.

La primavera è davvero un ottimo strumento. (Non stavo parlando di Spring MVC, solo del framework di base).


5

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

Approccio di primavera (iniezione di dipendenza)

C'è un altro modo per collegare le classi insieme a un file XML: le annotazioni. Usiamo l'esempio della risposta accettata e registrare il fagiolo direttamente sulla classe utilizzando uno dei annotazioni @Component, @Service, @Repositoryo @Configuration:

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

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

L'affermazione sopra è valida con un piccolo bonus che non richiede l'uso di file XML e il cablaggio con un'altra annotazione @Autowiredche trova un'implementazione pertinente e la inserisce.

@Autowired
private UserLister userLister;

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


Sbagliato. Non è possibile utilizzare l' @Beanannotazione a livello di classe. Deve essere uno dei @Component, @Service, @Repositoryecc resto è corretto. Dovresti forse anche sottolineare che Autowiring the Interface in questo modo funzionerà solo se esiste solo 1 classe candidata in classpath adatta per l'iniezione, altrimenti errore dell'applicazione Spring.
Stefano L

@StefanoL: Sì, hai ragione. Mi chiedo che la gente abbia ignorato il mio errore. Grazie per il commento.
Nikolas

4

Il vantaggio è l' iniezione di dipendenza (DI) . Significa esternalizzare il compito di creare oggetti. Lasciatemi spiegare con un esempio.

public interface Lunch
{
   public void eat();
}

public class Buffet implements Lunch
{
   public void eat()
   {
      // Eat as much as you can 
   }
}

public class Plated implements Lunch
{
   public void eat()
   {
      // Eat a limited portion
   }
}

Ora nel mio codice ho una lezione LunchDecide come segue:

public class LunchDecide {
    private Lunch todaysLunch;
    public LunchDecide(){
        this.todaysLunch = new Buffet(); // choose Buffet -> eat as much as you want
        //this.todaysLunch = new Plated(); // choose Plated -> eat a limited portion 
    }
}

Nella classe sopra, a seconda del nostro umore, scegliamo Buffet () o Plated (). Tuttavia, questo sistema è strettamente accoppiato. Ogni volta che abbiamo bisogno di un diverso tipo di oggetto, dobbiamo cambiare il codice. In questo caso, commentando una riga! Immagina che ci siano 50 classi diverse utilizzate da 50 persone diverse. Sarebbe un casino infernale. In questo caso, dobbiamo disaccoppiare il sistema. Riscriviamo la classe LunchDecide.

public class LunchDecide {
    private Lunch todaysLunch;
    public LunchDecide(Lunch todaysLunch){
        this.todaysLunch = todaysLunch
        }
    }

Si noti che invece di creare un oggetto utilizzando una nuova parola chiave, abbiamo passato il riferimento a un oggetto di Tipo pranzo come parametro per il nostro costruttore. Qui, la creazione di oggetti è esternalizzata. Questo codice può essere cablato utilizzando il file di configurazione Xml (legacy) o Java Annotations (moderno). In entrambi i casi, la decisione su quale tipo di oggetto verrebbe creato verrebbe fatta durante il runtime. Un oggetto verrebbe iniettato da Xml nel nostro codice - Il nostro codice dipende da Xml per quel lavoro. Quindi, Dependency Injection (DI). DI non solo aiuta a rendere il nostro sistema liberamente accoppiato, ma semplifica la scrittura dei test unitari poiché consente di deridere le dipendenze. Ultimo ma non meno importante, DI semplifica la programmazione orientata agli aspetti (AOP) che porta a un ulteriore disaccoppiamento e aumento della modularità. Si noti inoltre che sopra DI è l'iniezione del costruttore.


Ma anche nel caso della primavera, avremmo ancora definito i fagioli. e l'id bean verrà fornito nel codice, non è vero? quindi se cambi il bean domani, devi ancora cambiare il codice, no? quindi qual è il vantaggio.
Arpan Buch,

@ArpanBuch Penso che il vantaggio di Spring sia che puoi scegliere un'implementazione diversa senza ricompilare alcun codice (a condizione che l'altra implementazione esista già). Sono un principiante, quindi potrei sbagliarmi.
byxor,

4
  • Spring è un framework leggero e flessibile rispetto a J2EE.
  • Il contenitore a molla funge da inversione di controllo.
  • Spring utilizza AOP, ovvero proxy e modelli Singleton, Factory e Template Method Design.
  • Architetture a più livelli: separazione dei problemi e livelli riutilizzabili e manutenzione facile.

inserisci qui la descrizione dell'immagine


1
Spring Framework help you with several things like, don't reinvent the wheel. you can connect very easily with some database just using Spring Data, or create schedule tasks like CronJob or Windows Task. amazing !
tomj0101,

3

La primavera è una buona alternativa alla tecnologia Enterprise JavaBeans (EJB) . Dispone inoltre di framework web e componente framework di servizi web.


1
Posso correggere? Era un'alternativa al (orribile) EJB 2 ... sembra che "il nuovo EJB" (in parte, JPA 2, ecc.) Abbia accolto con entusiasmo. Gli "happy hour" della parte primaverile "una specie di EJB" sembrano essere passati. ad 2015
Jacek Cz,

1

La primavera è iniziata come un sistema di iniezione di dipendenza abbastanza semplice. Ora è enorme e ha tutto (tranne per il proverbiale lavello della cucina).

Ma non temere, è abbastanza modulare, quindi puoi usare solo i pezzi che desideri.

Per vedere da dove è iniziato tutto, prova:

http://www.amazon.com/Expert-One-Design-Development-Programmer/dp/0764543857/ref=sr_1_1?ie=UTF8&s=books&qid=1246374863&sr=1-1

Potrebbe essere vecchio ma è un libro eccellente.

Per un altro buon libro questa volta dedicato esclusivamente alla primavera vedi:

http://www.amazon.com/Professional-Java-Development-Spring-Framework/dp/0764574833/ref=sr_1_2?ie=UTF8&s=books&qid=1246374863&sr=1-2

Fa riferimento anche alle versioni precedenti di Spring, ma vale sicuramente la pena guardarle.


1

All'inizio la primavera era l'iniezione di dipendenza, quindi si aggiungeva re di wrapper per quasi tutto (wrapper su implementazioni JPA ecc.).

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

Buona libreria, ma con crescente depnedenciec, ad esempio Spring JDBC (forse una soluzione jdbc Java con parametri di nomi reali) prende dal prossimo 4-5.

Usando Spring MVC (parte di "big spring") per lo sviluppo web ... è un framework basato su "richieste", c'è una guerra santa "richiesta vs componente" ... fino a te


1
Credo che ora il framework Spring stia cercando di spostarsi dall'XML alle annotazioni e alla configurazione Java.
Maksim,

0

In passato ho pensato al framework Spring dal punto di vista puramente tecnico.

Data l'esperienza del lavoro di gruppo e dello sviluppo di Webapp aziendali, direi che Spring è uno sviluppo più rapido di applicazioni (applicazioni Web) disaccoppiando i suoi singoli elementi (bean). Lo sviluppo più rapido lo rende così popolare. Spring consente di spostare la responsabilità della costruzione (cablaggio) dell'applicazione sul framework Spring. L' iniezione di dipendenza del framework Spring è responsabile del collegamento / cablaggio dei 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.

Il test di tale applicazione è semplice: l'attenzione principale è rivolta ai singoli bean. 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 in quanto vi sono singoli elementi separati e riutilizzabili.


0

Il framework Spring è sicuramente buono per lo sviluppo web e per essere più specifico per i servizi API riposanti.

È buono per quanto sopra a causa della sua iniezione di dipendenza e integrazione con altri moduli come sicurezza della molla , molla aop , framework mvc , microservizi

Con qualsiasi applicazione, la sicurezza è molto probabilmente un requisito.
Se miri a costruire un prodotto che richiede una lunga manutenzione, dovrai utilizzare il concetto Aop.

Se l'applicazione ha molto traffico, aumentando così il carico, è necessario utilizzare il concetto di microservizi.

Spring offre tutte queste funzionalità in un'unica piattaforma. Supporto con molti moduli .
Ancora più importante, la primavera è open source e un framework estensibile, ha un gancio ovunque per integrare il codice personalizzato nel ciclo di vita.

Spring Data è un progetto che fornisce l'integrazione con il tuo progetto.


Quindi la primavera può adattarsi a quasi ogni esigenza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.