The Micronaut Foundation™ is excited to announce the release of Micronaut framework 3.1! This is the first feature release since we released Micronaut framework 3.0 in mid-August.
Here are the new features, improvements, and changes included in this release.
JDK 17 Support
Micronaut Launch now supports creating applications with JDK 17!
Factory beans can now create beans that are primitive types or primitive array types.
Qualifiers can now be repeatable, allowing narrowing of bean resolution by a complete or partial match of the qualifiers declared on the injection point.
@InjectScope annotation has been added, which destroys any beans with no defined scope and injects them into a method or constructor annotated with
@Inject after the method or constructor completes.
Build Time Optimizations
The way classes are generated to support bean introspections has changed to reduce the number and size of the classes generated, as well as optimizing your Micronaut project’s memory usage, in particular with GraalVM.
Support for context propagation of the server request has been further improved by passing request context information in the Project Reactor context and when using Kotlin coroutines. See the documentation for more information.
Filter By Regex
HTTP filters now support matching URLs by a regular expression. Set the
patternStyle member of the annotation to
REGEX, and the value will be treated as a regular expression.
Random Port Binding
The way the server binds to random ports has improved and should result in fewer port-binding exceptions in tests.
@Client Data Formatting
ann:core.convert.Format annotation now supports several new values that can be used in conjunction with the declarative HTTP client to support formatting data in new ways. See the documentation for the full details.
Streaming File Uploads
StreamingFileUpload API has been improved to support streaming directly to an output stream. As with the other
transferTo methods, the write to the stream is offloaded to the IO pool automatically.
Server SSL Configuration
The SSL configuration for the Netty server now responds to refresh events. This allows for swapping out certificates without having to restart the server. See the https documentation for information on how to trigger the refresh.
New Netty Server API
If you wish to programmatically start additional Netty servers on different ports with potentially different configurations, new APIs have been added to do so, including a new
netty.responses.file.* configuration is deprecated in favor of
micronaut.server.netty.responses.file.*. The old configuration key will be removed in the next major version of the framework.
Micronaut Data 3.1.0
- Kotlin’s coroutines support. New repository interface
- Support for
- R2DBC upgraded to
- JPA Criteria specifications
micronaut.security.token.roles-separatorconfiguration property splits roles in a string claim
- Support for Jakarta security annotations:
SecurityFilteris now togglable and has a configurable pattern
micronaut.security.oauth2.clients.*.client-credentials.additional-request-paramsconfiguration property provides additional parameters for Client Credential requests
Micronaut JAX-RS 3.1
The JAX-RS module now integrates with Micronaut Security, allowing binding of the JAX-RS
Micronaut Kubernetes 3.1.0
Micronaut Kubernetes 3.1 introduces a new annotation:
@Informer. By using the annotation on the ResourceEventHandler, the Micronaut framework will instantiate the SharedInformer from the official Kubernetes Java SDK. Then you only need to take care of handling the changes of the watched Kubernetes resource. See more on Kubernetes Informer.
Micronaut Oracle Coherence 3.0.0
The Micronaut Oracle Coherence module is now out of preview status and includes broad integration with Oracle Coherence, including support for caching, messaging, and Micronaut Data.
We consider the community to be the cornerstone of the Micronaut framework, and your feedback is incredibly important to its success! Please try upgrading your existing applications to this release and report any issues you find. See the documentation for further details and use GitHub to report any issues.