org.springframework

1. Introduktion

Spring Framework ger en ren och uttrycksfull programmerings- och konfigurationsmodell för moderna Java-baserade företagsapplikationer som kan köras på vilken distributionsplattform som helst.

Den här artikeln täcker högnivåöversikten över Spring-ramverket och huvudsakligen org.springframework-paketet som ger stöd för beroendeinjektion, transaktionshantering, webbapplikationer, datatillgång, meddelanden, testning och mer.

2. Funktioner

Spring Framework erbjuder en omfattande lista med funktioner:

  • Vår MVC webbapplikation och RESTful ram för webbtjänster
  • Aspektorienterad programmering inklusive vårens deklarativa transaktionshantering
  • Beroende injektion
  • Inversion av kontroll

och mycket mer.

3. Maven Beroenden

Om du vill lägga till Spring i ditt Maven-projekt kan du hitta mer information om det här.

4. Vårprojekt

Ramverket innehåller ett antal olika moduler och projekt. Från konfiguration till säkerhet, webbappar till stora data - oavsett infrastrukturbehov i din applikation, det finns ett vårprojekt som hjälper dig att bygga det.

Börja i det lilla och använd precis vad du behöver - våren är modulärt designad. Låt oss titta på några av dessa projekt här.

4.1. Spring Web MVC

Web MVC framework ger Model-View-Controller-arkitektur, utformad kring en DispatcherServlet som hanterar alla HTTP-förfrågningar och svar och gör applikationen löst kopplad.

Det bästa med det är att du kan använda vilket objekt som helst som ett kommando eller formobjekt - det finns inget behov av att implementera ett ramspecifikt gränssnitt eller basklass. Dess databindning är mycket flexibel: den behandlar till exempel typavvikelser som valideringsfel som kan utvärderas av applikationen, inte som systemfel.

Här hittar du den fullständiga guiden.

4.2. Vår IO-plattform

IO-plattformen definierar en uppsättning beroenden (båda Spring Framework-beroenden som tredjepartsbibliotek) som kan inkluderas i ett Java-projekt så att du kan välja nödvändiga beroenden utan att oroa dig för kompatibilitet mellan deras versioner (eftersom Spring IO garanterar det).

IO-plattformen är certifierad för att fungera med Java 7 och 8.

Ta en titt på GitHub-projektet.

4.3. Fjäderkänga

Spring Boot gör det enkelt att skapa fristående, fjädersbaserade applikationer i produktionskvalitet som du bara kan ”köra”. Det gör det väldigt enkelt att skapa en fjäderdriven applikation med ett minimum av arbete.

En applikation som skapats med den kan till stor del autokonfigureras med några förnuftiga standardinställningar och bredvid det kan förbättras med mätvärden (hur många förfrågningar, hur lång tid tog förfrågningar etc.).

Den består av flera (valfria) moduler:

  1. CLI - Ett kommandoradsgränssnitt, baserat på Groovy, för att starta / stoppa skapade applikationer med fjäderstart.
  2. Boot Core - Basen för andra moduler.
  3. Autokonfigurering - Modul för att automatiskt konfigurera ett brett spektrum av vårprojekt. Det kommer att upptäcka tillgängligheten av vissa ramar (Spring Batch, Spring Data JPA, Hibernate, JDBC).
  4. Ställdon - Detta projekt, när det läggs till, kommer att aktivera vissa företagsfunktioner (Säkerhet, mätvärden, standardfelsidor) till din applikation.
  5. Förrätter - Olika snabbstartsprojekt att inkludera som ett beroende i din Maven- eller Gradle-byggfil. Det kommer att ha de beroenden som behövs för den typen av applikation. För närvarande finns det startprojekt för ett webbprojekt (tomcat och bryggbaserat), Spring Batch, Spring Data JPA, Spring Integration, Spring Security finns.
  6. Verktyg - Byggverktyget Maven och Gradle samt den anpassade Spring Boot Loader (används i den enda körbara burken / kriget) ingår i detta projekt.

Vi hittar Maven-artefakten här och tittar på GitHub-projektet.

4.4. Vårdata

Spring Datas uppdrag är att tillhandahålla en bekant och konsekvent, vårbaserad programmeringsmodell för datatillgång samtidigt som man behåller de underliggande datalagrens speciella egenskaper.

Det primära målet med detta projekt är att göra det lättare att bygga vårdrivna applikationer som använder nya datatillgångstekniker som icke-relationsdatabaser, kartreducerande ramar och molnbaserade datatjänster samt ger förbättrat stöd för relationsdatabasteknik. .

Detta är ett paraplyprojekt som innehåller många delprojekt som är specifika för en viss databas (som JPA, MongoDB, Redis, Apache Solr, Gemfire, Apache Cassandra). Projekten utvecklas genom att arbeta tillsammans med många av de företag och utvecklare som ligger bakom dessa spännande tekniker.

4.5. Vårsäkerhet

Spring Security är ett ramverk som fokuserar på att ge både autentisering och auktorisering till Java-applikationer. Precis som alla vårprojekt finns den verkliga kraften i Spring Security i hur lätt det kan utökas för att möta anpassade krav. Den släpps under en Apache 2.0-licens så att du med säkerhet kan använda den i dina projekt.

Det är också lätt att lära sig, distribuera och hantera. Det har ett dedikerat säkerhetsnamnutrymme som ger direktiv för de vanligaste operationerna, vilket möjliggör fullständig applikationssäkerhet på bara några rader XML och kan skydda dina appar mot attacker som sessionsfixering, clickjacking, förfalskning av förfrågningar på plats, etc.

Spring Security är också integrerat med många andra Spring-teknologier, inklusive Spring Web Flow, Spring Web Services och Pivotal tc Server.

Ta en titt på vanliga frågor om vårsäkerhet för att få en djupare inblick och Maven-beroendessidan. Ta också en titt på vårdsäkerhetshandledning för autentisering, registrering och installation av vårsäkerhet med Maven .

4.6. Vårens sociala

Spring Social är en förlängning av ramverket som gör det möjligt för applikationer att ansluta till Software-as-a-Service-leverantörer som Twitter, Facebook och andra OAuth-autentiseringsbaserade API: er. Det ger ett OAuth-autentiseringsramverk som är klart att använda för webbaserade applikationer.

Funktioner:

  • Ett utbyggbart ramverk för tjänsteleverantörer som förenklar processen för att ansluta lokala användarkonton till värdleverantörskonton.
  • En anslutningsstyrenhet som hanterar auktoriseringsflödet mellan din Java / Spring-webbapplikation, en tjänsteleverantör och dina användare.
  • Java-bindningar till populära tjänsteleverantörs-API: er som Facebook, Twitter, LinkedIn, TripIt och GitHub.
  • En inloggningsstyrenhet som gör det möjligt för användare att autentisera med din applikation genom att logga in via en tjänsteleverantör.

Komma igång-guider:

  • Åtkomst till Facebook-data
  • Vår sociala Twitter-inställning
  • Sekundär Facebook-inloggning

Våren ger en hel del exempel på GitHub-projekt för att du ska kunna börja snabbt och vår sociala referens är också praktisk med en snabbstartsida.

4.7. Vårskal

Spring Shell är ett interaktivt skal som enkelt kan utökas med kommandon med hjälp av en fjäderbaserad programmeringsmodell.

Användare av skalprojektet kan enkelt bygga en fullfjädrad applikation ( aka kommandorad) genom att bero på Spring Shell-burken och lägga till sina egna kommandon (som kommer som metoder på vårbönor). Att skapa en kommandoradsapplikation kan vara användbart, t.ex. för att interagera med ditt projekts REST API, eller för att arbeta med lokalt filinnehåll.

GitHub-projektet finns här.

4.8. Spring Mobile

Spring Mobile är en förlängning av ramverket och Spring Web MVC som syftar till att förenkla utvecklingen av mobila webbapplikationer.

Spring Mobile är ett ramverk som tillhandahåller funktioner för att upptäcka vilken typ av enhet som gör en begäran till din Spring-webbplats och servera alternativa vyer baserat på den enheten. Liksom alla vårprojekt finns den verkliga kraften i Spring Mobile i hur lätt den kan utökas.

Funktioner:

  • En abstrakt för enhetsupplösning för detektion av mobila enheter och surfplattor på serversidan
  • Hantering av webbplatspreferenser som gör att användaren kan ange om han eller hon föredrar en "normal", "mobil" eller "surfplatta" upplevelse
  • En webbplatsväxlare som kan byta användare till den mest lämpliga webbplatsen, antingen mobil, surfplatta eller normal, baserat på hans eller hennes enhet och valfritt angett en webbplatspreferens
  • Enhetsmedveten vyhantering för att organisera och hantera olika vyer för specifika enheter.

Denna applikation kommer att komma igång snabbt.

Du kan också upptäcka en enhet, hantera en webbplatspreferens eller servera mobilt webbinnehåll med Spring MVC.

4.9. Vårparti

Spring Batch är en lätt och omfattande ram som syftar till att möjliggöra utveckling av batchapplikationer som är viktiga för den dagliga driften av företagssystem.

Batchapplikationer i detta sammanhang avser automatiserade offline-system riktade mot massuppgiftsbehandling. Spring Batch automatiserar denna grundläggande batch-iteration och ger möjlighet att behandla liknande transaktioner som en uppsättning, vanligtvis i en offline-miljö utan användarinteraktion.

Spring Batch fungerar genom att läsa data med en konfigurerbar bitstorlek från en datakälla, bearbeta den och slutligen skriva den till en resurs.

Datakällan för läsaren kan vara platta filer (textfil, XML-fil, CSV-fil ...), relationsdatabas (MySQL ...), MongoDB.

På samma sätt kan en författare skriva data till platta filer, relationsdatabaser, MongoDB, mailer etc.

Kom snabbt igång genom att skapa en batchtjänst och med andra resurser från vårpartiet.

5. Kärnfjäderpaket

Här, låt oss ta en titt på de viktigaste vårpaketen.

  • org.springframework.cache - Detta paket stöder underpaket och klasser för deklarativ cachehantering, ställer in öppen källkodscache i koffeinbiblioteket, supportklasser för öppen källkodscache EhCache 2.x.

  • org.springframework.context - Detta paket bygger på bönor-paketet för att lägga till stöd för meddelandekällor och för Observer-designmönstret och förmågan för applikationsobjekt att skaffa resurser med ett konsekvent API.

  • org.springframework.core - Tillhandahåller grundläggande klasser för undantagshantering och versionsidentifiering och andra kärnhjälpmedel som inte är specifika för någon del av ramverket.

  • org.springframework.expression - Detta paket ger kärnabstraktioner bakom Spring Expression Language .

  • org.springframework.http - Detta paket innehåller en grundläggande abstraktion över HTTP på klient / serversida.

  • org.springframework.jdbc - Klasserna i detta paket gör JDBC enklare att använda och minskar sannolikheten för vanliga fel.
  • org.springframework.jms - Detta paket innehåller integrationsklasser för JMS, vilket möjliggör JMS-åtkomst i vårstil.

  • org.springframework.jndi - Klasserna i detta paket gör JNDI lättare att använda, vilket underlättar åtkomst till konfiguration som är lagrad i JNDI och ger användbara superklasser för JNDI-åtkomstklasser.

  • org.springframework.orm.hibernate5 - Paket som ger integration av Hibernate 5.x med Spring-koncept.

  • org.springframework.test.util - Allmänna verktygsklasser för användning i enhets- och integrationstester.

Denna lista är begränsad och beskriver bara kärnpaket för Spring Framework. Du hittar den fullständiga listan här.

6. Sammanfattning

I den här snabba översiktsartikeln tittade vi på olika projekt som finns i vårens ekosystem och gjorde en rik samling av Maven-beroenden, GitHub-projekten och de omfattande funktioner som varje projekt erbjuder för att göra våra webbappar säkra, skalbara och lätta att leva med.

Vi tittade också på kärnpaket som ger oss kraft att fokusera på en logisk aspekt av våra appar.