org.springframework

1. Inleiding

Het Spring Framework biedt een schoon en expressief programmeer- en configuratiemodel voor moderne op Java gebaseerde bedrijfstoepassingen die op elk implementatieplatform kunnen worden uitgevoerd.

Dit artikel behandelt het overzicht op hoog niveau van het Spring-framework en voornamelijk het org.springframework-pakket dat ondersteuning biedt voor afhankelijkheidsinjectie, transactiebeheer, webapplicaties, gegevenstoegang, berichten, testen en meer.

2. Kenmerken

Spring Framework biedt een uitgebreide lijst met functies:

  • Spring MVC-webapplicatie en RESTful webserviceframework
  • Aspect-georiënteerd programmeren inclusief het declaratieve transactiebeheer van Spring
  • Afhankelijkheidsinjectie
  • Omkering van controle

en veel meer.

3. Maven afhankelijkheden

Als je Spring aan je Maven-project wilt toevoegen, kun je hier meer informatie over vinden.

4. Lenteprojecten

Het Framework bevat een aantal verschillende modules en projecten. Van configuratie tot beveiliging, webapps tot big data - wat de infrastructuurbehoeften van uw applicatie ook mogen zijn, er is een Spring-project om u te helpen het te bouwen.

Begin klein en gebruik precies wat u nodig heeft - Spring is modulair opgebouwd. Laten we hier enkele van die projecten bekijken.

4.1. Spring Web MVC

Web MVC-framework biedt Model-View-Controller-architectuur, ontworpen rond een DispatcherServlet die alle HTTP-verzoeken en -antwoorden afhandelt en de applicatie losjes gekoppeld maakt.

Het beste hiervan is dat je elk object als een commando of formulierobject kunt gebruiken - het is niet nodig om een ​​framework-specifieke interface of basisklasse te implementeren. De gegevensbinding is zeer flexibel: het behandelt bijvoorbeeld type-mismatches als validatiefouten die door de toepassing kunnen worden geëvalueerd, niet als systeemfouten.

Hier vind je de complete gids.

4.2. Spring IO-platform

IO Platform definieert een reeks afhankelijkheden (zowel Spring Framework-afhankelijkheden als bibliotheken van derden) die kunnen worden opgenomen in een Java-project zodat u de benodigde afhankelijkheden kunt kiezen zonder u zorgen te hoeven maken over compatibiliteit tussen hun versies (omdat Spring IO dit garandeert).

Het IO-platform is gecertificeerd om met Java 7 en 8 te werken.

Bekijk het GitHub-project.

4.3. Spring Boot

Spring Boot maakt het gemakkelijk om stand-alone Spring-gebaseerde applicaties van productiekwaliteit te creëren die u "gewoon kunt draaien". Het maakt het heel gemakkelijk om met een minimum aan werk een Spring-powered applicatie te maken.

Een applicatie die ermee is gemaakt, kan grotendeels automatisch worden geconfigureerd met enkele verstandige standaardinstellingen en kan daarnaast worden verbeterd met metrische gegevens (hoeveel verzoeken, hoelang hebben verzoeken geduurd, enz.).

Het bestaat uit verschillende (optionele) modules:

  1. CLI - Een opdrachtregelinterface, gebaseerd op Groovy, voor het starten / stoppen van door de lente opgestarte applicaties.
  2. Boot Core - De basis voor andere modules.
  3. Automatisch configureren - Module om een ​​breed scala aan Spring-projecten automatisch te configureren. Het detecteert de beschikbaarheid van bepaalde frameworks (Spring Batch, Spring Data JPA, Hibernate, JDBC).
  4. Actuator - Dit project zal, wanneer het wordt toegevoegd, bepaalde bedrijfsfuncties (beveiliging, meetgegevens, standaardfoutpagina's) inschakelen voor uw toepassing.
  5. Starters - Verschillende snelstartprojecten om als afhankelijkheid op te nemen in uw Maven- of Gradle-buildbestand. Het heeft de benodigde afhankelijkheden voor dat type applicatie. Momenteel zijn er startersprojecten voor een webproject (op basis van kater en steiger), Spring Batch, Spring Data JPA, Spring Integration, Spring Security.
  6. Tools - De Maven en Gradle build-tool en de aangepaste Spring Boot Loader (gebruikt in de enkele uitvoerbare jar / war) zijn bij dit project inbegrepen.

We kunnen het Maven-artefact hier vinden en het GitHub-project bekijken.

4.4. Lente gegevens

De missie van Spring Data is om een ​​vertrouwd en consistent, op Spring gebaseerd programmeermodel voor gegevenstoegang te bieden met behoud van de speciale eigenschappen van de onderliggende gegevensopslag.

Het primaire doel van dit project is om het gemakkelijker te maken om Spring-powered applicaties te bouwen die nieuwe datatoegangstechnologieën gebruiken, zoals niet-relationele databases, kaartreducerende frameworks en cloudgebaseerde datadiensten, en om verbeterde ondersteuning te bieden voor relationele databasetechnologieën. .

Dit is een overkoepelend project dat veel subprojecten bevat die specifiek zijn voor een bepaalde database (zoals JPA, MongoDB, Redis, Apache Solr, Gemfire, Apache Cassandra). De projecten worden ontwikkeld door samen te werken met veel van de bedrijven en ontwikkelaars die achter deze opwindende technologieën zitten.

4.5. Lente beveiliging

Spring Security is een raamwerk dat zich richt op zowel authenticatie als autorisatie voor Java-applicaties. Zoals bij alle Spring-projecten, schuilt de echte kracht van Spring Security in hoe gemakkelijk het kan worden uitgebreid om aan aangepaste vereisten te voldoen. Het is vrijgegeven onder een Apache 2.0-licentie, zodat u het met een gerust hart in uw projecten kunt gebruiken.

Het is ook gemakkelijk te leren, te implementeren en te beheren. Het heeft een speciale beveiligingsnaamruimte die richtlijnen biedt voor de meest voorkomende bewerkingen, waardoor volledige applicatiebeveiliging in slechts een paar regels XML mogelijk is en uw apps kan beschermen tegen aanvallen zoals sessiefixatie, clickjacking, cross-site request vervalsing, enz.

Spring Security is ook geïntegreerd met vele andere Spring-technologieën, waaronder Spring Web Flow, Spring Web Services en Pivotal tc Server.

Bekijk de veelgestelde vragen van Spring-beveiliging voor een dieper inzicht en de Maven-afhankelijkheidspagina. Bekijk ook Spring-beveiligingshandleidingen voor authenticatie, registratie en het instellen van Spring Security met Maven.

4.6. Lente sociaal

Spring Social is een uitbreiding van het framework waarmee applicaties verbinding kunnen maken met Software-as-a-Service-providers zoals Twitter, Facebook en andere op OAuth-authenticatie gebaseerde API's. Het biedt een gebruiksklaar OAuth-authenticatieframework voor webgebaseerde applicaties.

Kenmerken:

  • Een uitbreidbaar raamwerk voor serviceproviders dat het proces van het verbinden van lokale gebruikersaccounts met gehoste provideraccounts aanzienlijk vereenvoudigt.
  • Een connect-controller die de autorisatiestroom tussen uw Java / Spring-webtoepassing, een serviceprovider en uw gebruikers afhandelt.
  • Java-koppelingen met populaire API's van serviceproviders, zoals Facebook, Twitter, LinkedIn, TripIt en GitHub.
  • Een aanmeldingscontroller waarmee gebruikers zich kunnen verifiëren met uw toepassing door in te loggen via een serviceprovider.

Aan de slag-handleidingen:

  • Toegang tot Facebook-gegevens
  • Spring Social Twitter-instellingen
  • Secundaire Facebook-login

Spring biedt nogal wat voorbeelden van GitHub-projecten om je snel te laten beginnen en Spring Social-referentie is ook handig met een snelle startpagina.

4.7. Lente Shell

Spring Shell is een interactieve shell die eenvoudig kan worden uitgebreid met opdrachten met behulp van een op Spring gebaseerd programmeermodel.

Gebruikers van het shell-project kunnen eenvoudig een shell met volledige functionaliteit bouwen (aka command line) applicatie door afhankelijk te zijn van de Spring Shell-pot en hun eigen commando's toe te voegen (die als methoden op springbeans komen). Het kan handig zijn om een ​​opdrachtregeltoepassing te maken bijv. om te communiceren met de REST API van uw project, of om te werken met lokale bestandsinhoud.

Het GitHub-project is hier te vinden.

4.8. Spring Mobile

Spring Mobile is een uitbreiding van het framework en Spring Web MVC dat tot doel heeft de ontwikkeling van mobiele webapplicaties te vereenvoudigen.

Spring Mobile is een raamwerk dat mogelijkheden biedt om het type apparaat te detecteren dat een verzoek doet aan uw Spring-website en alternatieve weergaven biedt op basis van dat apparaat. Zoals bij alle Spring-projecten, schuilt de echte kracht van Spring Mobile in hoe gemakkelijk het kan worden uitgebreid.

Kenmerken:

  • A Device resolver abstractie voor server-side detectie van mobiele apparaten en tablets
  • Beheer van sitevoorkeuren waarmee de gebruiker kan aangeven of hij of zij de voorkeur geeft aan een 'normale', 'mobiele' of 'tablet'-ervaring
  • Een siteswitcher die de gebruiker naar de meest geschikte site kan schakelen, mobiel, tablet of normaal, op basis van zijn of haar apparaat en optioneel een sitevoorkeur heeft aangegeven
  • Apparaatbewust weergavebeheer voor het organiseren en beheren van verschillende weergaven voor specifieke apparaten.

Met deze voorbeeldtoepassing kunt u snel aan de slag.

U kunt ook een apparaat detecteren, een websitevoorkeur afhandelen of mobiele webcontent aanbieden met Spring MVC.

4.9. Lente partij

Spring Batch is een lichtgewicht, alomvattend raamwerk dat is bedoeld om de ontwikkeling mogelijk te maken van batchtoepassingen die essentieel zijn voor de dagelijkse activiteiten van bedrijfssystemen.

Batchapplicaties verwijzen in deze context naar geautomatiseerde offline systemen die zijn gericht op bulkgegevensverwerking. Spring Batch automatiseert deze basis batch-iteratie en biedt de mogelijkheid om vergelijkbare transacties als een set te verwerken, meestal in een offline omgeving zonder enige gebruikersinteractie.

Spring Batch werkt door gegevens met een configureerbare chunkgrootte uit een gegevensbron te lezen, deze te verwerken en uiteindelijk naar een bron te schrijven.

De gegevensbron voor de lezer kunnen platte bestanden zijn (tekstbestand, XML-bestand, CSV-bestand ...), relationele database (MySQL ...), MongoDB.

Evenzo kan een schrijver gegevens schrijven naar platte bestanden, relationele databases, MongoDB, mailer enz.

Ga snel aan de slag door een batchservice te maken en met andere Spring-batchbronnen.

5. Core veerpakketten

Laten we hier eens kijken naar de belangrijkste voorjaarspakketten.

  • org.springframework.cache - Dit pakket ondersteunt subpakketten en klassen voor declaratief cachebeheer, het opzetten van de open source cache in de Caffeine-bibliotheek, ondersteuningsklassen voor de open source cache EhCache 2.x.

  • org.springframework.context - Dit pakket bouwt voort op het bonen-pakket om ondersteuning toe te voegen voor berichtbronnen en voor het Observer-ontwerppatroon, en de mogelijkheid voor toepassingsobjecten om bronnen te verkrijgen met behulp van een consistente API.

  • org.springframework.core - Biedt basisklassen voor het afhandelen van uitzonderingen en versiedetectie en andere kernhelpers die niet specifiek zijn voor enig deel van het framework.

  • org.springframework.expression - Dit pakket bevat kern abstracties achter het Spring Expression Language.

  • org.springframework.http - Dit pakket bevat een basis abstractie over client / server-side HTTP.

  • org.springframework.jdbc - De klassen in dit pakket maken JDBC gemakkelijker te gebruiken en verkleinen de kans op veelvoorkomende fouten.
  • org.springframework.jms - Dit pakket bevat integratieklassen voor JMS, waardoor JMS-toegang in Spring-stijl mogelijk is.

  • org.springframework.jndi - De klassen in dit pakket maken JNDI gemakkelijker te gebruiken, vergemakkelijken de toegang tot de configuratie die is opgeslagen in JNDI, en bieden handige superklassen voor JNDI-toegangsklassen.

  • org.springframework.orm.hibernate5 - Pakket dat de integratie van Hibernate 5.x met Spring-concepten biedt.

  • org.springframework.test.util - Algemene hulpprogramma-klassen voor gebruik in unit- en integratietests.

Deze lijst is beperkt en beschrijft alleen de kernpakketten voor het Spring-framework. De volledige lijst vind je hier.

6. Conclusie

In dit korte overzichtsartikel hebben we verschillende projecten bekeken die aanwezig zijn in het Spring-ecosysteem en hebben we een rijke verzameling Maven-afhankelijkheden, de GitHub-projecten en de uitgebreide functies gemaakt die elk project biedt om onze web-apps veilig, schaalbaar en gemakkelijk te maken leef met.

We hebben ook gekeken naar kernpakketten waarmee we ons kunnen concentreren op een logisch aspect van onze apps.