Spring Framework

Spring Framework is een van de meest populaire Java EE-frameworks. In dit artikel zullen we meer te weten komen over het volgende:

  • Architectuur van het Spring-framework
  • Kerncomponenten van Spring
  • Verschillende projecten onder de paraplu van het Spring-framework.

I looked at the Google Trends chart for Spring Framework, Servlet, JSP, and JSF. It’s clear that Spring is far ahead from all other Java EE technologies.

Spring Framework – Google Trends

Wat is het Spring Framework?

Spring is een van de meest populaire frameworks voor Java Enterprise Edition. Ontwikkelaars over de hele wereld gebruiken Spring om betrouwbare en hoogwaardige toepassingen te ontwikkelen. Het Spring-framework is ontworpen door Rod Johnson. Sindsdien is Spring een alternatieve technologie geworden in de Java-wereld voor het EJB-model. Met het Spring-framework kun je verschillende soorten toepassingen maken.

Kernconcepten van Spring – DI, IoC, AOP

  • Het is onmogelijk om te begrijpen wat het Spring Framework is zonder te begrijpen wat Dependency Injection en Inversion of Control zijn. Dependency Injection, ook wel DI genoemd, is een van de soorten Inversion of Control (IoC).
  • Inversion of Control – dit is het principe van objectgeoriënteerd programmeren, waarbij objecten van het programma niet afhankelijk zijn van concrete implementaties van andere objecten, maar wel kennis kunnen hebben over hun abstracties (interfaces) voor latere interactie.
  • Dependency Injection – is een samenstelling van structurele ontwerppatronen, waarbij voor elke functie van de applicatie één, voorwaardelijk onafhankelijk object (service) bestaat dat de noodzaak kan hebben om andere objecten (afhankelijkheden) te gebruiken die het kent via interfaces. Afhankelijkheden worden overgedragen (geïmplementeerd) naar de service op het moment van creatie ervan. Dit is een situatie waarbij we een element van de ene klasse introduceren in een andere. In de praktijk wordt DI geïmplementeerd door parameters door te geven aan de constructor of door setters te gebruiken. Bibliotheken die deze aanpak implementeren, worden ook wel IoC-containers genoemd.
  • Aspect oriented programming – een programmeerparadigma dat het mogelijk maakt om doorsnijdende (functionele) functionaliteit in de applicatie te onderscheiden. Deze functies, die meerdere applicatieknooppunten omvatten, worden doorsnijdende zorgen genoemd en deze doorsnijdende notities worden gescheiden van de onmiddellijke bedrijfslogica van de applicatie. In OOP is de belangrijkste eenheid de klasse, terwijl in AOP het belangrijkste element het aspect is. DI helpt bij het scheiden van applicatieklassen in afzonderlijke modules, en AOP helpt bij het scheiden van doorsnijdende zorgen van de objecten die ze beïnvloeden.

Spring Framework Architectuur

Spring Framework is verdeeld in verschillende modules, waardoor je kunt beslissen welke je wilt gebruiken in je applicatie. De onderstaande afbeelding illustreert de belangrijkste modules van de Spring Framework-architectuur. Laten we eens kijken naar de verschillende modules van het Spring-ecosysteem, een voor een.

Spring Framework Kerncomponenten

De kerncontainer van Spring bestaat uit vier modules: SpEL, Context, Core, Beans. De beschrijving van deze elementen is als volgt:

  1. De SpEL-module biedt een krachtige expressietaal voor het manipuleren van objecten tijdens de uitvoering.
  2. Context is gebouwd op basis van Beans en Core en stelt je in staat toegang te krijgen tot elk object dat is gedefinieerd in de instellingen. Het sleutelelement van de Context-module is de ApplicationContext-interface.
  3. De Core-module levert essentiële onderdelen van het framework, waaronder IoC- en DI-eigenschappen.
  4. De Bean-module is verantwoordelijk voor het maken en beheren van Spring Beans – de eenheid voor de structuur van de applicatiecontext.

Spring Framework Web

De Weblaag van het Spring-framework bestaat uit Web, Web-MVC, Web-Socket, Web-Portlet, enzovoort.

  1. De Webmodule biedt functies zoals het downloaden van bestanden, het maken van webapplicaties, RESTful webservices, enzovoort.
  2. Web-MVC bevat een implementatie van Spring MVC voor webapplicaties.
  3. Web-Socket biedt ondersteuning voor communicatie tussen de client en de server met behulp van WebSockets in webapplicaties.
  4. Web-Portlet biedt een MVC-implementatie in een portlet-omgeving

Spring Framework Data Access

De container voor gegevens-toegang/integratie bestaat uit JDBC, ORM, OXM, JMS en het Transactiemodule.

  1. JDBC biedt een abstracte laag voor JDBC en elimineert de noodzaak voor de ontwikkelaar om handmatig de eentonige code te registreren die verband houdt met het verbinden met de database.
  2. Spring ORM biedt integratie met populaire ORMs zoals Hibernate, JDO, die implementaties zijn van JPA.
  3. De OXM-module is verantwoordelijk voor het koppelen van het Object/XML – XMLBeans, JAXB, enz.
  4. De JMS (Java Messaging Service) module is verantwoordelijk voor het creëren, verzenden en ontvangen van berichten.
  5. Transacties ondersteunen transactiebeheer voor klassen die bepaalde methoden en POJO’s implementeren.

Diverse Modules

Spring bevat ook een aantal andere belangrijke modules, zoals AOP, Aspecten, Instrumentatie, Messaging en Testen.

  1. AOP implementeert aspectgeoriënteerd programmeren en maakt gebruik van het volledige arsenaal aan AOP-mogelijkheden.
  2. De Aspects-module biedt integratie met AspectJ, wat ook een krachtig AOP-framework is.
  3. Instrumentatie is verantwoordelijk voor het ondersteunen van klasseninstrumentatie en de class loader, die worden gebruikt in servertoepassingen.
  4. De Messaging-module biedt STOMP-ondersteuning.
  5. Tenslotte biedt de Test-module testen met behulp van TestNG of het JUnit Framework.

Nieuwe Functies van Spring 5

Spring 5 bracht een enorme update naar Spring 4. Enkele van de belangrijke functies van Spring 5 zijn:

  1. Ondersteuning voor Java 8, Java 9, Java EE 7, Java EE 8, Servlet 4.0, Bean Validation 2.0 en JPA 2.2. Ik ben blij te zien dat Spring probeert gelijke tred te houden met de nieuwste versies van belangrijke technologieën die worden gebruikt.
  2. Verbeterde logging met de nieuwe module – spring-jcl.
  3. Bestandsbewerkingen maken gebruik van NIO 2-streams, wat de prestaties verbetert.
  4. Ondersteuning voor Reactor 3.1 Flux en Mono, evenals RxJava 1.3 en 2.1 als retourwaarden uit Spring MVC-controllermethoden.
  5. Ondersteuning voor Kotlin, Project Lombok, JSON Binding API als alternatief voor Jackson en GSON.
  6. Spring WebFlux – Spring wordt Reactief.
  7. Ondersteuning voor JUnit 5
  8. Functionele programmeerondersteuning via Kotlin.

Je kunt Spring-projecten bekijken op onze GitHub Repository.

Referenties: Spring Officiële Website, Spring Referentiedocumentatie

Source:
https://www.digitalocean.com/community/tutorials/spring-framework