Spring 5 werd eind 2017 uitgebracht. Spring 5 brengt een enorme update naar het Spring-framework. Spring 4 werd uitgebracht in 2013, dus iedereen verwachtte een grote revisie van het framework. Ik ben erg blij om de nieuwe functies in het Spring-framework te zien.
Spring 5 Functies
De functies van Spring 5 kunnen ruwweg worden verdeeld in de volgende categorieën:
- Ondersteuning voor Java Baseline
- Verbeteringen aan de Core API
- Verbeteringen aan Spring Web MVC
- Spring WebFlux
- Functioneel programmeren met Kotlin-ondersteuning
- Verbeteringen aan testen
- Ondersteuning voor verouderde functies en verwijderde pakketten
Ondersteuning voor Java Baseline
- Spring 5 draait op Java 8, dus Spring-code kan lambda-expressies gebruiken om de leesbaarheid van de code te verbeteren.
- Spring 5 ondersteunt ook Java 9, zodat we onze applicaties kunnen maken op basis van een modulearchitectuur.
- Spring 5 ondersteunt Java EE 7 en is ook compatibel met Java EE 8. Hierdoor kunnen we Servlet 4.0, Bean Validation 2.0, JPA 2.2 gebruiken in onze toepassingen. We kunnen ook hun oudere versies gebruiken, namelijk Servlet 3.1, Bean Validation 1.1, JPA 2.1.
- De voorkeurservers voor Spring 5-toepassingen zijn Tomcat 8.5+, Jetty 9.4+ en WildFly 10+.
I really like that spring 5 is trying to catch up to the latest version of different technologies.
Kern-API-verbeteringen
- Non-null API-verklaring op pakketniveau. Nullable argumenten, velden en retourwaarden zijn expliciet geannoteerd met de
@Nullable
-annotatie. - Bestandsbewerkingen worden uitgevoerd via NIO 2-streams, dus geen FileInput/Output Stream. Dit is een geweldige verbetering en prestatieboost voor op bestanden gebaseerde toepassingen.
- Spring Framework 5.0 wordt geleverd met zijn eigen Commons Logging-brug;
spring-jcl
in plaats van de standaard Commons Logging. - Ondersteuning voor het verstrekken van informatie over Spring-componenten via het indexbestand “META-INF/spring.components” in plaats van het scannen van het klassenpad. Dit verbetert de opstarttijd aanzienlijk als je een groot Spring-project hebt met veel Spring-componenten. Het is ook beter voor ontwikkelaars omdat we rechtstreeks in aangewezen bestanden kunnen kijken om het toegangspunt van de toepassing te achterhalen in plaats van door het hele klassenpad te zoeken.
Verbeteringen aan Spring Web MVC
De Spring MVC-module heeft een grote update gekregen wat betreft het gebruik van de nieuwste Java EE-technologieën. Enkele van de belangrijkste verbeteringen zijn:
- Volledige ondersteuning van Servlet 3.1-handtekeningen in door Spring geleverde
Filter
-implementaties. - Ondersteuning voor Servlet 4.0
PushBuilder
-argument in Spring MVC-controllermethoden. - MaxUploadSizeExceededException voor Servlet 3.0 multipart-analyse op gangbare servers.
- Uniforme ondersteuning voor gangbare mediatypen via MediaTypeFactory-delegate.
- Data binding met onveranderlijke objecten met behulp van Kotlin, Lombok, @ConstructorProperties.
- Ondersteuning voor de JSON Binding API als alternatief voor Jackson en GSON.
- Ondersteuning voor Reactor 3.1 Flux en Mono, evenals RxJava 1.3 en 2.1 als retourwaarden van Spring MVC-controllermethoden.
- Ondersteuning voor
ResponseStatusException
als een programmatisch alternatief voor@ResponseStatus
.
Spring WebFlux
Spring WebFlux is de nieuwe module, het is een alternatief voor de spring-webmvc
-module en gebouwd op een reactief framework. Deze module wordt gebruikt om volledig asynchrone en niet-blokkerende applicaties te maken die zijn gebouwd op het event-loop uitvoeringsmodel.
- Reactieve infrastructuur in spring-core zoals Encoder en Decoder voor het coderen en decoderen van streams van objecten.
- @Controller-stijl, op annotaties gebaseerd, programmeermodel, vergelijkbaar met Spring MVC, maar ondersteund in WebFlux, draait op een reactieve stack.
- Nieuwe WebClient met een functionele en reactieve API voor HTTP-oproepen, vergelijkbaar met de RestTemplate maar via een vloeiende API en ook uitblinkend in niet-blokkerende en streaming scenario’s gebaseerd op WebFlux-infrastructuur.
Functioneel programmeren met Kotlin-ondersteuning
Spring 5 ondersteunt nu ook Kotlin-programmering. Dit is een grote stap naar het ondersteunen van functioneel programmeren, net zoals Java ook richting functioneel programmeren beweegt.
- Ondersteuning voor Null-Safe API
- Ondersteuning voor Kotlin onveranderlijke klassen met optionele parameters en standaardwaarden.
- Gebruik van Kotlin reified type parameters om expliciete specificatie van de Klasse te vermijden die moet worden gebruikt voor serialisatie/deserialisatie in verschillende API’s zoals RestTemplate of WebFlux API’s.
- Ondersteuning voor Kotlin autowired constructor met optionele parameters.
- Kotlin null-veiligheidsondersteuning voor @Autowired/@Inject en @RequestParam/@RequestHeader/enz. annotaties.
Testverbeteringen
- Ondersteuning voor JUnit 5
- Ondersteuning voor parallelle testuitvoering in het Spring TestContext Framework
Ondersteuning voor verouderde functies en verwijderde pakketten
- Verwijderde pakketten
beans.factory.access
,jdbc.support.nativejdbc
,mock.staticmock
uit de modulespring-aspects
. - Verwijderde pakketten
web.view.tiles2
enorm.hibernate3/hibernate4
zijn verwijderd. Dit betekent dat als je van plan bent Spring 5 te gebruiken, je ook Hibernate 5 moet gebruiken. - Gestopte ondersteuning voor oude technologieën Portlet, Velocity, JasperReports, XMLBeans, JDO, Guava. Als je een van deze gebruikt, migreer dan naar andere technologieën of blijf bij Spring 4.
Dat is alles voor een snel overzicht van de functies van Spring 5. Referentie: Spring GitHub-documentatie
Source:
https://www.digitalocean.com/community/tutorials/spring-5