org.springframework

1. Introduzione

Spring Framework fornisce un modello di programmazione e configurazione pulito ed espressivo per le moderne applicazioni aziendali basate su Java che possono essere eseguite su qualsiasi piattaforma di distribuzione.

Questo articolo copre la panoramica di alto livello del framework Spring e principalmente, il pacchetto org.springframework che fornisce supporto per l'inserimento di dipendenze, la gestione delle transazioni, le applicazioni web, l'accesso ai dati, la messaggistica, i test e altro ancora.

2. Caratteristiche

Spring Framework offre un elenco completo di funzionalità:

  • Applicazione Web Spring MVC e framework di servizi Web RESTful
  • Programmazione orientata agli aspetti, inclusa la gestione delle transazioni dichiarative di Spring
  • Iniezione di dipendenza
  • Inversione di controllo

e altro ancora.

3. Dipendenze di Maven

Se vuoi aggiungere Spring al tuo progetto Maven, puoi trovare maggiori informazioni a riguardo qui.

4. Progetti di primavera

Il Framework include una serie di diversi moduli e progetti. Dalla configurazione alla sicurezza, dalle app web ai big data: qualunque siano le esigenze di infrastruttura della tua applicazione, esiste un progetto Spring per aiutarti a costruirla.

Inizia in piccolo e usa solo ciò di cui hai bisogno: Spring è modulare per design. Diamo un'occhiata ad alcuni di questi progetti qui.

4.1. Spring Web MVC

Il framework Web MVC fornisce un'architettura Model-View-Controller, progettata attorno a un DispatcherServlet che gestisce tutte le richieste e risposte HTTP e rende l'applicazione liberamente accoppiata.

La cosa migliore è che ti consente di utilizzare qualsiasi oggetto come un comando o un oggetto modulo: non è necessario implementare un'interfaccia specifica del framework o una classe base. Il suo data binding è altamente flessibile: ad esempio, tratta le mancate corrispondenze di tipo come errori di convalida che possono essere valutati dall'applicazione, non come errori di sistema.

Qui puoi trovare la guida completa.

4.2. Piattaforma Spring IO

IO Platform definisce un insieme di dipendenze (entrambe le dipendenze di Spring Framework come librerie di terze parti) che potrebbero essere incluse in un progetto Java per consentire di scegliere le dipendenze necessarie senza preoccuparsi della compatibilità tra le loro versioni (perché Spring IO lo garantisce).

La piattaforma IO è certificata per funzionare con Java 7 e 8.

Dai un'occhiata al progetto GitHub.

4.3. Spring Boot

Spring Boot semplifica la creazione di applicazioni Spring autonome di livello di produzione che possono essere "semplicemente eseguite". Rende molto facile creare un'applicazione alimentata a molla con un minimo di lavoro.

Un'applicazione creata con esso può essere in gran parte autoconfigurata con alcuni valori predefiniti ragionevoli e accanto a ciò può essere migliorata con le metriche (quante richieste, quanto tempo hanno richiesto le richieste ecc.).

Consiste di diversi moduli (opzionali):

  1. CLI - Un'interfaccia della riga di comando, basata su Groovy, per avviare / arrestare le applicazioni create con l'avvio a molla.
  2. Boot Core: la base per altri moduli.
  3. Configurazione automatica: modulo per la configurazione automatica di un'ampia gamma di progetti Spring. Rileverà la disponibilità di determinati framework (Spring Batch, Spring Data JPA, Hibernate, JDBC).
  4. Attuatore: questo progetto, una volta aggiunto, abiliterà alcune funzionalità aziendali (sicurezza, metriche, pagine di errore predefinite) nella tua applicazione.
  5. Principianti: diversi progetti di avvio rapido da includere come dipendenza nel file di compilazione Maven o Gradle. Avrà le dipendenze necessarie per quel tipo di applicazione. Attualmente, esistono progetti di avviamento per un progetto web (basato su tomcat e molo), Spring Batch, Spring Data JPA, Spring Integration, Spring Security.
  6. Strumenti: lo strumento di compilazione Maven e Gradle e lo Spring Boot Loader personalizzato (utilizzato nel singolo file eseguibile jar / war) sono inclusi in questo progetto.

Possiamo trovare il manufatto Maven qui e dare un'occhiata al progetto GitHub.

4.4. Dati di primavera

La missione di Spring Data è fornire un modello di programmazione basato su Spring familiare e coerente per l'accesso ai dati, pur mantenendo i tratti speciali dell'archivio dati sottostante.

L'obiettivo principale di questo progetto è semplificare la creazione di applicazioni alimentate da Spring che utilizzano nuove tecnologie di accesso ai dati come database non relazionali, framework di riduzione delle mappe e servizi dati basati su cloud, oltre a fornire un supporto migliorato per le tecnologie di database relazionali .

Questo è un progetto ombrello che contiene molti sottoprogetti specifici per un dato database (come JPA, MongoDB, Redis, Apache Solr, Gemfire, Apache Cassandra). I progetti vengono sviluppati collaborando con molte delle aziende e degli sviluppatori che stanno dietro a queste entusiasmanti tecnologie.

4.5. Spring Security

Spring Security è un framework che si concentra sulla fornitura di autenticazione e autorizzazione alle applicazioni Java. Come tutti i progetti Spring, il vero potere di Spring Security si trova nella facilità con cui può essere esteso per soddisfare i requisiti personalizzati. Viene rilasciato con una licenza Apache 2.0 in modo da poterlo utilizzare con sicurezza nei tuoi progetti.

È anche facile da imparare, distribuire e gestire. Dispone di uno spazio dei nomi di sicurezza dedicato che fornisce le direttive per le operazioni più comuni, consentendo la sicurezza completa delle applicazioni in poche righe di XML e può proteggere le tue app da attacchi come la correzione della sessione, il clickjacking, la contraffazione di richieste tra siti, ecc.

Spring Security è inoltre integrato con molte altre tecnologie Spring, tra cui Spring Web Flow, Spring Web Services e Pivotal tc Server.

Dai un'occhiata alle FAQ sulla sicurezza di Spring per avere una visione più approfondita e la pagina delle dipendenze di Maven. Inoltre, dai un'occhiata ai tutorial sulla sicurezza di Spring per l'autenticazione, la registrazione e la configurazione di Spring Security con Maven .

4.6. Spring Social

Spring Social è un'estensione del framework che consente alle applicazioni di connettersi con fornitori di Software-as-a-Service come Twitter, Facebook e altre API basate sull'autenticazione OAuth. Fornisce un framework di autenticazione OAuth pronto per l'uso per applicazioni basate sul web.

Caratteristiche:

  • Un framework estensibile per provider di servizi che semplifica notevolmente il processo di connessione degli account utente locali agli account del provider ospitato.
  • Un controller di connessione che gestisce il flusso di autorizzazione tra l'applicazione Web Java / Spring, un provider di servizi e gli utenti.
  • Associazioni Java a API di provider di servizi popolari come Facebook, Twitter, LinkedIn, TripIt e GitHub.
  • Un controller di accesso che consente agli utenti di autenticarsi con la tua applicazione accedendo tramite un provider di servizi.

Guide introduttive:

  • Accesso ai dati di Facebook
  • Configurazione Spring Social Twitter
  • Accesso secondario a Facebook

Spring fornisce alcuni esempi di progetti GitHub per farti iniziare rapidamente e Spring Social Reference è utile anche con una pagina di avvio rapido.

4.7. Shell di primavera

Spring Shell è una shell interattiva che può essere facilmente estesa con comandi utilizzando un modello di programmazione basato su Spring.

Gli utenti del progetto shell possono facilmente creare un'applicazione shell completa ( nota anche come riga di comando) in base al jar Spring Shell e aggiungendo i propri comandi (che vengono come metodi sui bean spring). La creazione di un'applicazione a riga di comando può essere utile, ad esempio, per interagire con l'API REST del progetto o per lavorare con il contenuto del file locale.

Il progetto GitHub può essere trovato qui.

4.8. Spring Mobile

Spring Mobile è un'estensione del framework e Spring Web MVC che mira a semplificare lo sviluppo di applicazioni web mobili.

Spring Mobile è un framework che fornisce funzionalità per rilevare il tipo di dispositivo che effettua una richiesta al tuo sito Web Spring e fornire visualizzazioni alternative basate su quel dispositivo. Come tutti i progetti Spring, il vero potere di Spring Mobile sta nella facilità con cui può essere esteso.

Caratteristiche:

  • Un'astrazione del resolver di dispositivi per il rilevamento lato server di dispositivi mobili e tablet
  • Gestione delle preferenze del sito che consente all'utente di indicare se preferisce un'esperienza "normale", "mobile" o "tablet"
  • Un selettore di sito in grado di indirizzare l'utente al sito più appropriato, mobile, tablet o normale, in base al suo dispositivo e facoltativamente indicato una preferenza del sito
  • Gestione delle viste in grado di riconoscere i dispositivi per organizzare e gestire viste diverse per dispositivi specifici.

Questa applicazione di esempio ti consentirà di iniziare rapidamente.

Puoi anche rilevare un dispositivo, gestire le preferenze di un sito Web o offrire contenuti Web mobili con Spring MVC.

4.9. Lotto di primavera

Spring Batch è un framework leggero e completo volto a consentire lo sviluppo di applicazioni batch vitali per le operazioni quotidiane dei sistemi aziendali.

Le applicazioni batch in questo contesto si riferiscono a sistemi offline automatizzati destinati all'elaborazione di dati in blocco. Spring Batch automatizza questa iterazione batch di base, fornendo la capacità di elaborare transazioni simili come un set, in genere in un ambiente offline senza alcuna interazione da parte dell'utente.

Spring Batch funziona leggendo i dati con una dimensione di blocco configurabile da un'origine dati, elaborandoli e infine scrivendoli su una risorsa.

La sorgente dati per il lettore può essere file flat (file di testo, file XML, file CSV…), database relazionale (MySQL…), MongoDB.

Allo stesso modo, uno scrittore può scrivere dati su file flat, database relazionali, MongoDB, mailer ecc.

Inizia rapidamente creando un servizio batch e con altre risorse batch di Spring.

5. Pacchetti primavera core

Qui, diamo uno sguardo ai principali pacchetti Spring.

  • org.springframework.cache: questo pacchetto supporta i pacchetti secondari e le classi per la gestione dichiarativa della cache, la configurazione della cache open source nella libreria Caffeine, le classi di supporto per la cache open source EhCache 2.x.

  • org.springframework.context: questo pacchetto si basa sul pacchetto bean per aggiungere il supporto per le origini dei messaggi e per il modello di progettazione Observer e la possibilità per gli oggetti dell'applicazione di ottenere risorse utilizzando un'API coerente.

  • org.springframework.core - Fornisce classi di base per la gestione delle eccezioni e il rilevamento delle versioni e altri helper principali che non sono specifici per nessuna parte del framework.

  • org.springframework.expression: questo pacchetto fornisce le astrazioni principali dietro il linguaggio Spring Expression .

  • org.springframework.http: questo pacchetto contiene un'astrazione di base sull'HTTP lato client / server.

  • org.springframework.jdbc - Le classi in questo pacchetto rendono JDBC più facile da usare e riducono la probabilità di errori comuni.
  • org.springframework.jms - Questo pacchetto contiene classi di integrazione per JMS, consentendo l'accesso JMS in stile Spring.

  • org.springframework.jndi - Le classi in questo pacchetto rendono JNDI più facile da usare, facilitando l'accesso alla configurazione memorizzata in JNDI e forniscono utili superclassi per le classi di accesso JNDI.

  • org.springframework.orm.hibernate5 - Pacchetto che fornisce l'integrazione di Hibernate 5.x con i concetti di Spring.

  • org.springframework.test.util: classi di utilità generali da utilizzare nei test di unità e di integrazione.

Questo elenco è limitato e descrive solo i pacchetti principali per il framework Spring. Puoi trovare l'elenco completo qui.

6. Conclusione

In questo articolo di rapida panoramica, abbiamo dato un'occhiata a vari progetti presenti nell'ecosistema Spring e abbiamo creato una ricca raccolta di dipendenze Maven, i progetti GitHub e le funzionalità complete offerte da ciascun progetto per rendere le nostre app web sicure, scalabili e facili da vivere con.

Abbiamo anche esaminato i pacchetti principali che ci consentono di concentrarci su un aspetto logico delle nostre app.