In dit artikel zullen we de opwindende nieuwe functies verkennen die zijn geïntroduceerd in Spring Boot 3, de nieuwste versie van het populaire Java-framework. Spring Boot heeft een revolutie teweeggebracht in de manier waarop ontwikkelaars Java-applicaties bouwen door een gestroomlijnde en eigenzinnige benadering van applicatie-ontwikkeling te bieden. Met elke nieuwe release blijft Spring Boot evolueren en verbeteren, waardoor ontwikkelaars met gemak robuuste en schaalbare applicaties kunnen maken.
Op de hoogte blijven van de nieuwste versies garandeert toegang tot nieuwe functies, verbeteringen en beveiligingsverbeteringen, evenals community-ondersteuning, waardoor ontwikkelaars efficiënt hoogwaardige applicaties kunnen bouwen.
Summary
1. Overview van Spring Boot 3
Spring Boot is een veelgebruikt framework voor het ontwikkelen van webapplicaties en microservices in Java. Het vereenvoudigt het ontwikkelingsproces door intelligente standaardconfiguraties te bieden en repetitieve taken te elimineren. Spring Boot versnelt de ontwikkeling van applicaties door ingebouwde functies aan te bieden, zoals geïntegreerde applicatieservers, afhankelijkheidsbeheer en kant-en-klare ondersteuning voor veel populaire bibliotheken en technologieën.
Spring Boot 3 is een belangrijke release van het Spring Boot-framework, uitgebracht in november 2022. Het bevat verschillende nieuwe functies, verbeteringen en bugfixes:
- Java 17 Baseline: Spring Boot 3 vereist Java 17 of hoger. Dit betekent dat u kunt profiteren van de nieuwste functies en prestatieverbeteringen die Java 17 biedt.
- Ondersteuning voor het genereren van native images met GraalVM: GraalVM is een krachtige virtuele machine die kan worden gebruikt om native images van uw Spring Boot-applicaties te genereren. Dit kan de prestaties van uw applicaties aanzienlijk verbeteren, vooral bij het opstarten.
- Verbeterde waarneembaarheid met Micrometer en Micrometer Tracing: Micrometer is een bibliotheek die een uniforme API biedt voor het verzamelen van statistieken van uw Spring Boot-applicaties. Micrometer Tracing is een bibliotheek die traceringsondersteuning biedt voor uw Spring Boot-toepassingen. Met deze bibliotheken kunt u uw toepassingen eenvoudiger controleren en problemen oplossen.
- Ondersteuning voor Jakarta EE 10 met een EE 9-basislijn: Jakarta EE 10 is de nieuwste versie van de Jakarta EE-specificatie. Spring Boot 3 bevat ondersteuning voor Jakarta EE 10, dus u kunt Spring Boot nu gebruiken om applicaties te ontwikkelen die voldoen aan de Jakarta EE 10-specificatie.
- Spring Framework 6: Spring Boot 3 is gebaseerd op Spring Framework 6 en bevat dus alle nieuwe functies en verbeteringen die in Spring Framework 6 zijn geïntroduceerd.
2. Verbeteringen
Spring Boot 3 introduceert verschillende prestatieverbeteringen en optimalisaties om de responsiviteit en efficiëntie van applicaties te vergroten.
Deze verbeteringen zijn gericht op het verkorten van de opstarttijden, het minimaliseren van de geheugenvoetafdruk en het optimaliseren van het gebruik van bronnen.
Met een meer gestroomlijnde en lichtgewicht runtime-omgeving zullen applicaties die op Spring Boot 3 zijn gebouwd een verbeterde schaalbaarheid en reactievermogen ervaren, wat resulteert in een betere gebruikerservaring en een hogere klanttevredenheid.
We zullen hieronder een eenvoudige manier noemen om de prestaties van een springboot-applicatie te verbeteren.
3. Systeem vereisten
Spring Boot 3 vereist Java 17 (of hoger) en Spring Framework 6 (of hoger).
Bouw gereedschap
Maven ➜ 3,5+
Gradle ➜ 7.x (7.5 of hoger)
Serveercontainers
Spring Boot ondersteunt de volgende ingebedde servletcontainers:
Naam | Servlet Versie |
---|---|
Tomcat 10.0 | 5.0 |
Jetty 11.0 | 5.1 |
Undertow 2.2 (Jakarta EE 9 variant) | 5.0 |
Je kunt ook springboot-applicaties implementeren in elke servlet 5.0+ compatibele container.
GraalVM native afbeeldingen
Spring Boot-applicaties kunnen worden geconverteerd naar een Native Image met GraalVM 22.3 of hoger.
Afbeeldingen kunnen worden gemaakt met behulp van de native build-tools Gradle/Maven-plug-ins of de native image-tool van GraalVM. U kunt ook native images maken met behulp van het Paketo-buildpakket met native image.
The following versions are supported:
Name | Version |
---|---|
GraalVM Community | 22.3 |
Native Build Tools | 0.9.18 |
4. Compatibiliteit en migratie
Migreren naar Spring Boot 3 vereist een reeks bijbehorende migraties en afhankelijkheidsupdates die moeten worden uitgevoerd voordat een upgrade naar deze nieuwste versie van Spring Boot wordt uitgevoerd. Deze zijn:
- Het bijwerken van de applicaties, infrastructuur en CI/CD-pijplijn van uw organisatie om ten minste Java 17 te gebruiken. Het voordeel van deze stap is dat u deze kunt uitvoeren voordat u een van uw Spring Boot-applicaties bijwerkt.
- Alle reeds bestaande Spring-applicaties die Java EE gebruiken, hebben een update naar Jakarta EE 9 nodig. Hoewel dit een eenvoudige taak lijkt om alle import van de Javax-naamruimte naar de Jakarta-naamruimte te verplaatsen, vereist dit ook de migratie van externe partijen. bibliotheken naar versies die compatibel zijn met Jakarta EE 9.
Er zijn gevallen waarin we pakketnamen mogelijk niet hoeven te herstructureren bij het upgraden van onze software, omdat sommige afhankelijkheden, zoals javax.sql.DataSource, al tot JDK 17 behoren, en niet tot Jakarta EE. In deze gevallen is het niet nodig om de pakketnaam te wijzigen, aangezien deze al consistent is met de nieuwste versie van onze app. Het is echter belangrijk op te merken dat het essentieel is om alle afhankelijkheden grondig te beoordelen en te testen om er zeker van te zijn dat ze compatibel zijn met de nieuwe versie van de code.
Ten slotte kan het nodig zijn, afhankelijk van de versie van Spring Boot waaruit uw applicaties worden gemigreerd, om verschillende wijzigingen aan te brengen in zowel de code als de configuratie van de applicatie wanneer u overschakelt naar Spring Boot 3.
5. Nieuwe Tools En Framework Integraties
5.1. Java 17 Baseline en Java 19-ondersteuning
Het belangrijkste nieuws waar we ons zorgen over maken is dat Spring Boot 3 in ieder geval Java 17 ondersteunt.
Als u momenteel met Java 8 of 11 werkt, moet u migreren naar JDK 17 voordat u kunt genieten van de ontwikkeling van Spring Boot 3-applicaties.
Spring Boot 3 werkt ook goed en is getest met JDK 19.
Volgens de Java-gemeenschap en de experten:
- “De volgende Java-ondersteuningsrelease voor de lange termijn levert duizenden updates, waardoor de taal en het platform verder worden verbeterd om ontwikkelaars te helpen productiever te zijn”
- “Oracle JDK 17 biedt klanten tot en met september 2019 updates op het gebied van beveiliging, prestaties en bugfixes”
Misschien wilt u meer lezen over de nieuwe functies die beschikbaar zijn in JDK 17.
5.2 GraalVM Native Image Support
Met Spring Boot 3 kunt u nu gebruik maken van native GraalVM-imageondersteuning.
Spring Boot 3-applicaties kunnen nu worden geconverteerd naar native GraalVM-images, wat aanzienlijke verbeteringen in het geheugen en de opstartprestaties kan opleveren.
Zeg vaarwel tegen uw JVM en geniet van de grote technische inspanningen die zijn geleverd voor het gehele Spring-portfolio!
Als u aan de slag wilt gaan met native GraalVM-images, gaat u naar de bijgewerkte Spring Boot-referentiedocumentatie.
5.3. Jakarta EE API
Spring Boot 3 is voor bijna alle afhankelijkheden gemigreerd van Java JEE naar Jakarta JEE API’s.
De nieuwe compatibele afhankelijkheden van Jakarta JEE komen via Jakarta JEE 10, waaronder:
- Jakarta Validation 3.0
- Jakarta Persistence 3.1
- Jakarta Servlet 6.0
- Jakarta Transaction 2.0
- Jakarta JSON 2.1
- Jakarta WS RS 3.1
- Jakarta XML WS 4.0
Misschien vind je het leuk om erover te lezen het Jakarta JEE 10 core profile.
5.4 Spring Framework 6
Spring Boot 3 bouwt voort op en vereist Spring Framework 6. In deze release zijn er verschillende Spring-geüpgradede modules, zoals:
- Spring Security 6.0
- Spring Session 3.0
- Spring WS 4.0
- Spring Integration 6.0
- Spring Batch 5.0
- Spring Kafka 3.0
- Spring Data 2022.0
We moeten vermelden dat Spring Framework 6 nu compatibel is met de JPA-ondersteuning voor Hibernate ORM 6.1.
5.5 Web Flux Verbeteringen
Spring Framework 6 provides us with new enhancement in the WebFlux Spring Module for reactive programming :
- Nieuwe PartEvent API om multipart-formulieruploads te streamen (zowel op client als server).
- Nieuwe ResponseEntityExceptionHandler om WebFlux-uitzonderingen aan te passen Flux retourneert waarden voor niet-streaming mediatypen (niet langer verzameld in List voordat ze worden geschreven).
- Vroege ondersteuning voor Reactor Netty 2 gebaseerd op Netty 5 alpha.
- JDK HttpClient geïntegreerd met WebClient.
Als je meer wilt weten over: the new WebFlux Spring module.
5.6 Micrometer Metrics & Tracing Updates
Zoals we weten, is Micrometer de verzamelgevel voor statistieken en tracering van een springboot-applicatie die Actuator gebruikt.
SpringBoot 3 wordt geleverd met twee belangrijke updates die zijn geïntroduceerd in Micrometer 1.10:
- Automatische configuratie voor micrometerobservatie-API.
- Automatische configuratie voor micrometertracering.
SpringBoot 3 biedt ons dus de ObservationRe
Meer weten over: micrometer metrics and tracing with Actuator Spring Boot 3
5.7 Dependency upgrades
Zoals hierboven besproken, is SpringBoot 3 in ieder geval afhankelijk van de Spring Framework 6-versie, dus andere afhankelijkheden worden als volgt geüpgraded:
- Kotlin 1.7 +
- Lombok 1.18.22+
- Gradle 7.3+
5.8 Miscellaneous
Dit zijn ook enkele verbeteringen en afschaffingen in SpringBoot 3.
Verbeteringen:
- Automatische configuratie voor de nieuwe Elasticsearch Java Client is geïntroduceerd.
- Apache HTTP-client en JdkClientHttpConnector wordt nu automatisch geconfigureerd
- De @SpringBootTest-annotatie kan nu de hoofdtekst van elke ontdekte @SpringBootConfiguration-klasse gebruiken, indien beschikbaar. Dit betekent dat tests nu elke aangepaste SpringApplication-configuratie kunnen oppikken die door uw hoofdmethode wordt uitgevoerd.
Verwijderde functies:
- De op scannen gebaseerde JsonMixinModule-constructor is verwijderd en ClientHttpRequestFactorySupplier is vervangen door ClientHttpRequestFactories.
- Eigenschappen voor cookie-opmerkingen worden nu niet langer ondersteund.
- RestTemplateExchangeTagsProvider, WebClientExchangeTagsProvider, WebFluxTagsProvider, WebMvcTagsProvider en gerelateerde klassen zijn vervangen door ObservationConvention-equivalenten.
- De no-args-constructors op de basisklassen HealthContributor @Configuration zijn verwijderd.
- DefaultTestExecutionListenersPostProcessor en SpringBootDependencyInjectionTestExecutionListener zijn vervangen ten gunste van ApplicationContextFailureProcessor van Spring Framework.
- De property’s management.metrics.export. zijn veranderd; de vervanging is management..metrics.export.
- De push-instelling van management.prometheus.metrics.export.pushgateway.shutdown-operation ten gunste van post.
- Bovendien is @AutoConfigureMetrics beëindigd ten gunste van @AutoConfigureObservability.
6. Security Verbeteringen
In deze sectie bespreken we de beveiligingsgerelateerde updates in Spring Boot 3.
6.1 WebSecurityConfigurerAdapter verwijderd
Toen we in eerdere versies van Spring Security de beveiligingsinstellingen wilden configureren, moesten we de klasse WebSecurityConfigurerAdapter uitbreiden.
Deze klasse is verouderd en verwijderd in Spring Security 6.
In plaats daarvan moeten we nu een meer op componenten gebaseerde aanpak hanteren en een boon van het type SecurityFilterChain maken.
Voorbeeld:
6.2 authorizeHTTPRequests
In plaats van AuthorizeRequests te gebruiken, wat verouderd is, moeten we nu AuthorizeHttpRequests gebruiken.
Deze methode maakt deel uit van de HttpSecurity-configuratie en stelt u in staat gedetailleerde aanvraagmatching voor toegangscontrole te configureren.
Voorbeeld:
In dit voorbeeld staan we toegang toe tot het “/api/auth”-verzoek, terwijl authenticatie voor alle andere verzoeken vereist is.
6.3 requestMatchers replacing antMatchers, mvcMatchers & regexMatchers
In Spring Security 6 zijn AntMatcher, MvcMatcher en RegexMatcher afgeschreven en vervangen door requestMatchers of securityMatchers voor padgebaseerd toegangscontrole. Hierdoor kunnen we verzoeken matchen op basis van patronen of andere criteria, zonder afhankelijk te zijn van specifieke matchers.
In het vorige voorbeeld kunnen we zien dat het systeem toegang tot het ‘/api/auth’-eindpunt toestaat zonder authenticatie, terwijl authenticatie vereist is voor alle andere verzoeken.
7. Community and Ecosystem
Hieronder vindt u de respectievelijke links voor:
- Platform voor community bijdragen, bug reporting, and discussies
- Officiële docs hub van Spring Boot 3. Het biedt uitgebreide documentatie, handleidingen en tutorials om ontwikkelaars te helpen aan de slag te gaan en op de hoogte te blijven van de nieuwste releases van Spring Boot.
- Het officiële Spring Boot forum is een communityplatform waar ontwikkelaars kunnen deelnemen aan discussies, hulp kunnen zoeken en hun ervaringen kunnen delen.
- Stack Overflow: De Spring Boot-tag op Stack Overflow is een communityplatform waar ontwikkelaars kunnen deelnemen aan discussies, hulp kunnen zoeken en hun ervaringen kunnen delen.
- Spring Community Calendar: Bekijk de voorjaarscommunitykalender voor geplande evenementen, waaronder webinars en conferenties.
- SpringOne at VMware Explore Evenement in Las Vegas
Conclusie
Spring Boot 3 is een grote release die verschillende nieuwe functies en verbeteringen introduceert, waaronder:
- Ondersteuning van minimaal Java 17
- GraalVM native image-ondersteuning
- Verbeterde waarneembaarheid met Micrometer en micrometertracering
- Ondersteuning voor Jakarta EE 10
- Spring Framework 6
- Web Flux-verbeteringen
- Micrometerstatistieken en traceringsupdates
- Afhankelijkheidsupgrades
- Diverse wijzigingen en beëindigingen
Deze nieuwe functies en verbeteringen maken Spring Boot 3 tot een krachtiger en veelzijdiger raamwerk voor het ontwikkelen van Java-applicaties. Ze maken het ook eenvoudiger om applicaties te bouwen die efficiënter, schaalbaarder en veiliger zijn.
Als u momenteel Spring Boot gebruikt, kunt u overwegen een upgrade naar Spring Boot 3 uit te voeren om van deze nieuwe functies en verbeteringen te profiteren. Als Spring Boot nieuw voor je is, is Spring Boot 3 een prima startpunt voor het bouwen van je volgende Java-applicatie.
Meer Resources
Voor meer informatie over Spring Boot en hoe u Redis cache implementeert en gebruikt, kunt u onze inzichten bekijken: Redis Cache in Spring Boot applications of Distributed Caching using Redis in Spring Boot applications.
Lees meer Inzichten op Software Product Engineering.