Spring voor java

Het werkproces aanzienlijk vereenvoudigen met Spring voor Java

In 2002 stelde de Australische ontwikkelaar Rod Johnson de code van de Java-Framework Interface21 voor in zijn publicatie Expert One-on-One J2EE Design and Development. Hij had de code zelf geschreven voor gebruik in zijn eigen projecten. Op basis van deze code ontwikkelde hij later samen met andere programmeurs het Spring Framework. In juni 2003 werd het framework voor het eerst in de gratis licentie Apache 2.0 op SourceForge gepubliceerd en geldt tot op de dag van vandaag als een van de beste oplossingen voor het ontwikkelen van bedrijfstoepassingen in Java. Het opensource-framework schrapt sindsdien de zwakke punten en beperkingen van de standaard ontwikkelaarsomgeving J2EE (ook bekend als ‘Java platform’) en van het componentmodel Enterprise JavaBeans (EJB) door hun complexiteit aanzienlijk te verminderen.


wat is spring

Wat is Spring?

Spring vergemakkelijkt de ontwikkeling van Java-toepassingen zowel in offline- als online-applicaties. De grootste voordelen van het framework zijn de slanke broncode en de eenvoud waarmee aanpassingen gedaan kunnen worden. Om programmeurs dit comfort te kunnen bieden, is het framework gebaseerd op de volgende principes – die Rod Johnson al in zijn boek heeft toegelicht:

  • Dependency injection (DI): verwijst naar de externe instantie die vooraf de afhankelijkheden van objecten regelt. Spring maakt hiervoor gebruik van de Javacomponent JavaBeans. Deze JavaBeans fungeren in Java onder andere als container voor gegevensoverdracht. Hierdoor dienen ze binnen het Spring Framework als model voor alle beheerde bronnen (‘beans’). Zo kan Spring als container functioneren die het betreffende Javaproject voor geconfigureerde klassen inclusief afhankelijkheden ter beschikking stelt.
  • Aspectgerichte programmering (AOP): om de modulariteit van objectgerichte toepassingen verder te verhogen, biedt Spring ook een aspectgerichte programmeringsaanpak aan met de programmeertaal AspectJ. Daarmee kunnen aspecten, dus component-overkoepelende verbanden, die in complexe systemen onvermijdbaar zijn, syntactisch worden gestructureerd.
  • Templates: binnen Spring zijn templates klasseringen voor verschillende programma-interfaces. Deze maken het werken met API’s eenvoudiger doordat ze automatisch bronnenbeheer, uniforme foutbehandelingen en andere vormen van hulp bieden.

Door het volgen van de hierboven genoemde principes stelt het Spring Framework voor Java je in staat om bij de ontwikkeling van Enterprise-Java-toepassingen terug te grijpen op de zogeheten plain old Java objects (letterlijk: doodnormale Javaobjecten), oftewel POJO’s. In tegenstellingen tot Enterprise Javabeans (EJB’s) zijn deze POJO’s in bijna iedere omgeving inzetbaar en hebben daarom ook geen specifieke applicatieserver nodig om de EJB-container te ondersteunen. Standaardoplossingen zoals Tomcat zijn meer dan voldoende. Om Spring te kunnen gebruiken heb je verder ook de Java SE Development Kit (SDK) nodig.


spring modellen

Spring: inleiding in de belangrijkste modellen

Spring is de perfecte keuze voor de meest uiteenlopende toepassingen in Java. Dit is in de eerste plaats te danken aan de modulaire opbouw van het framework. Er staan je zo’n 20 modules ter beschikking bij de ontwikkeling met Spring. Je kunt zelf kiezen welke componenten je voor je toepassing wilt gebruiken en welke niet. In de standaardarchitectuur zijn de diverse modules ingedeeld in de volgende zes hoofdcategorieën:

  • Core Container: de core container bevat de elementaire modules spring-core, spring-context, spring-context-support en spring expression. Core en beans vormen hierbij het fundament van het framework en bevatten bijvoorbeeld de DI-functie en de POJO-ondersteuning. De contextmodule krijgt zijn eigenschappen van de beansmodule en voegt bijvoorbeeld functies toe aan de applicatie voor internationalisering of het laden van bronnen. Bovendien ondersteunt het Java-Enterprise-eigenschappen zoals EJB en JMX (Java Management Extensions). Met behulp van context support kunnen de bibliotheken van derden worden geïntegreerd in Spring. De module spring-expression bevat de Spring Expression Language (SPeL), een uitbreiding van de Unified Expression Language van de JSP-2.1-specificatie (JavaServer Pages).
  • AOP en instrumentatie: om de aspectgeoriënteerde programmering mogelijk te maken, bevat het Spring Framework de module spring-aop en de module spring-aspects om de eerdergenoemde taal AspectJ te integreren. Het spring-aop-component maakt het mogelijk om Javaklassen te instrumentaliseren – dus om bytecode in runtime te veranderen – en voegt bovendien ClassLoader-implementeringen toe voor verschillende applicatieservers.
  • Messaging: om als basis voor de op berichten gebaseerde toepassing te kunnen dienen, beschikt Spring over een aantal sleutelfuncties van het Spring-integratieproject – bijvoorbeeld ‘Message’, ‘MessageChannel’ of ‘MessageHandler’. De bijbehorende module heet spring-messaging
  • Datatoegang/-integratie: de modules in deze categorie dienen ertoe om Java-toepassingen de benodigde eigenschappen te geven voor interactie met andere toepassingen en de datatoegang te regelen. De module spring-jdbc stelt bijvoorbeeld een abstractielaag ter beschikking. Deze bepaalt hoe een client toegang krijgt tot de databank en het omslachtige JBDC-coderen vrijmaakt. De module spring-orm verzorgt daarentegen integratielagen voor populaire ORM-interfaces waarmee je relationele databanken kunt gebruiken. Andere componenten zijn spring-tx (ondersteunt programmatisch transactiemanagement voor alle klassen en POJO’s), spring-oxm (abstractielaag voor object-/XML-mapping) en spring-jms, een module met eigenschappen voor het produceren en verwerken van berichten.
  • Web: in deze categorie bevinden zich voor webtoepassingen de specifieke modules spring-webmvc en spring-websocket. De eerste geeft de Java-toepassing de typische web-georiënteerde integratiekenmerken zoals een uploadfunctie voor meerdelige gegevens (multipart) of een http-client. De module spring-webmvc wordt ook aangeduid als ‘web servlet’ en ontvangt de Spring-implementaties voor het realiseren van de standaardmodel-view-controller-architectuur en de REST-webdiensten. De module spring-websocket maakt dataoverdracht tussen client en server mogelijk op basis van websockets.
  • Test: de module spring-test laat je de functionaliteit van de componenten van je Java-toepassing controleren. Zo kun je de toepassing met aanvullende frameworks, zoals JUnit of TestNG, onderwerpen aan omvangrijke unit-tests (met focus op individuele componenten) en integratietests (met focus op de samenwerking van meerdere componenten).

Java in de webontwikkeling

Spring: Java in de moderne webontwikkeling

Vanaf het begin was Java, inclusief bijbehorende technologieën, gepland voor gebruik in de webontwikkeling. Na opstartproblemen door slechte ondersteuning door eerdere browsers, de toen nog lage bandbreedte van particuliere internetaansluitingen en onvoldoende rekencapaciteiten van toenmalige pc’s, brak de programmeertaal aan het einde van de jaren negentig echt door. In het begin van het internettijdperk waren Java-applets nog populair – dat zijn Java-toepassingen die met bijbehorende runtime-omgevingen in de browser worden uitgevoerd. Ze kunnen op de gebruiker reageren zonder gegevens naar de server te moeten sturen. De applets waren echter niet geschikt voor dagelijks gebruik door de hoge vereisten. Met de opkomst van mobiele apparaten, die browser-applets niet ondersteunen, zijn de interactieve webelementen volledig verdwenen.

Hoewel Java zich aan de ene kant al snel als flop ontpopte, is de programmeertaal voor servers een vast begrip geworden. Java wordt op verschillende manieren gebruikt: van servlets, de applet-tegenhanger die op servers wordt gebruikt, tot aan complexe bedrijfsoplossingen zoals middleware, bankensoftware of grote content-managementsystemen. De diverse Javatechnologieën zijn tegenwoordig meer in trek dan ooit tevoren, voor zover het budget het toestaat. Vanwege de voordelen op het gebied van kosten en de benodigde tijd wordt namelijk bij driekwart van alle websites de scripttaal PHP gebruikt. Voor webontwikkelaars die toch met Java willen werken, biedt Spring echter zowel de benodigde structuren als een aanzienlijke vereenvoudiging van het werkproces. De voordelen van Java-webtoepassingen zijn onder andere de platformonafhankelijkheid, de duidelijke structuur en de mogelijkheid om met bedrijfssoftware en -processen te integreren.


projecten met spring java

Voor welke projecten is het Spring-framework het meest geschikt?

Spring wordt meestal ook als lightweight-framework (letterlijk lichtgewicht) voor Java-toepassingen omschreven, omdat je bijna niets aan de broncode hoeft te veranderen om van de vele voordelen te kunnen profiteren. Onder andere gaat het hierbij om vereenvoudigingen bij het uitvoeren van transactiemanagement, interfaces en databanktoegang. Ook de mogelijkheid om gemakkelijk unit- en integratietests uit te voeren is beslist een reden voor de populariteit van het Spring-framework. Het belangrijkste punt is echter zonder twijfel de afstand van platform-specifieke en niet-gestandaardiseerde componenten. Dit maakt Spring in hoge mate draagbaar en onafhankelijk van applicatieservers. Daarom kan Spring zonder problemen als meta-netwerk worden ingezet waarin andere externe componenten of zelfs frameworks kunnen worden geïntegreerd. Een typisch voorbeeld is de ontwikkeling van een Backend op basis van Spring, dat vervolgens met een Frontend wordt verbonden dat eerder is aangemaakt met een UI-framework zoals Twitter Bootstrap.

Vooral bij het realiseren van complexe bedrijfstoepassingen laat Spring zich van zijn beste kant zien. Voor bedrijven is het framework net als Java daarom al jaren een uitstekende keuze om benodigde technologieën uit te voeren. In tegenstelling tot een puur webframework – bijvoorbeeld het project Struts van concurrent Apache – is Spring niet beperkt tot webtoepassingen, maar kunnen ook eigen desktopoplossingen worden ontwikkeld. Voor eenvoudige toepassingen – online of offline – zijn Spring en Java echter minder geschikt, ook al is het niet onmogelijk.


voordelen van spring framework

Een overzicht van de voordelen van Spring

Als je wilt beginnen met de ontwikkeling van je volgende grote project en nog op zoek bent naar een geschikt framework, moet je het gebruik van het Spring-framework tenminste overwegen. Vooral als Java sowieso al een rol speelt in je plannen, kun je het jezelf een stuk makkelijker maken door gebruik te maken van de flexibele moduleverzameling. Zo krijg je een sterke basisstructuur waar je bijna niets aan hoeft te veranderen. Daarmee kun je al je aandacht richten op de ontwikkeling van de eigenlijke bedrijfslogica. In het officiële Githubarchief kun je te allen tijde het framework downloaden en uitproberen. Hieronder ten slotte nogmaals de voordelen van de ontwikkelaarsomgeving van Java op een rijtje:

  • Logica kan worden aangelegd als POJO’s
  • Afgeronde basiscodering die je nauwelijks hoeft te veranderen
  • Geen applicatieservers nodig
  • Maakt uni- en integratietests mogelijk
  • MVC-architectuur
  • Aspectgeoriënteerde programmering mogelijk met AspectJ
  • Dependency injection (externe afhankelijkheidsregulering)
  • Programmatisch transactiemanagement