What's Changed
Breaking Changes 🛠
- Make SnakeYAML and javax.annotation optional by @graemerocher in #8061
- Refactor
ConversionService
to remove mutable operations fromConversionService.SHARED
by @dstepanov in #8156 - Disable Cloud environment deduction by default. Fixes #7758 by @graemerocher in #8068
- Rework BOM as core BOM by @melix in #8299
- Remove the session module, and add micronaut-session by @timyates in #8281
- Remove previous context propagation instrumentation by @dstepanov in #9346
- Properties annotated with JPA transient should not be excluded from introspections by default by @lcavadas in #8072
- Change annotation-based CORS to match configuration-based defaults by @wetted in #9509
New Features 🎉
- Virtual thread support by @yawkat in #8180
- Introduce
@Vetoed
to exclude particular classes, methods and fields from processing by @dstepanov in #8274 - Implement support for injection of maps by @graemerocher in #8305
- Support arbitrary nesting of EachProperty/ConfigurationProperties beans by @graemerocher in #8424
- Adds support for KSP by @graemerocher in #8462
- Support annotation-based HTTP filter declarations by @yawkat in #8422
- Include disabled bean info in beans endpoint by @graemerocher in #8792
- feat: HTTP Client Implementation with Java HTTP Client by @sdelamo in #8441
- HTTP/3 support by @yawkat in #8559
- Add support for annotation-based CORS configuration (8558) by @wetted in #8580
- Support for Compilation Time Expressions in Annotations by @graemerocher in #8954
- add ability to disable streaming http request processing by @graemerocher in #9006
- Idea(8855)/service health indicator by @alexsimpson440dev in #9061
- Support for conditional routing by @graemerocher in #9094
- io_uring support by @yawkat in #9090
- Message Body Reader/Writer abstraction for server by @graemerocher in #9151
- Support MessageBodyWriter/Reader in the HTTP client by @yawkat in #9201
- Implement SSL config reloading for the netty http client by @yawkat in #9218
- New API for context propagation by @dstepanov in #7498
- Introduce
MutablePropagationContext
for HTTP filters by @dstepanov in #9349 - allow access to the body from an annotation driven filter by @graemerocher in #9353
Bug Fixes 🐞
- Remove use of shadow plugin by @melix in #8312
- Stop conversion of Properties keys and values by @timyates in #8327
- Groovy properties shouldn't become executable methods by @graemerocher in #8350
- Fix bug in introspections when properties are of mixed types by @graemerocher in #8451
- Don't include write only properties in serialization by @graemerocher in #8457
- Fix bug with custom conditions and EachBean definitions by @graemerocher in #8459
- Fix incorrect dependency substitution by @melix in #8467
- fix configuration inheritance path calculation by @graemerocher in #8484
- Fix NonUniqueBeanException when using FunctionInitializer by @graemerocher in #8488
- Remove usage of Utils classes from GraalReflectionConfigurer by @graemerocher in #8563
- Pick a more specific setter if child configuration properties by @graemerocher in #8578
- Fix NPE producing anntotion metadata for KSP by @graemerocher in #8736
- Fix GraalVM native image support by @graemerocher in #8793
- fix validation of write-only config properties by @graemerocher in #8826
- Fix broken MethodElement.overrides implementation by @graemerocher in #8842
- fix IncompatibleClassChangeError in ConfigurationProperties by @graemerocher in #8864
- fix: WebSocketMessageEncoder @requires classes by @sdelamo in #8962
- Logback configuration defined via JAVA_TOOL_OPTIONS is ignored by @timyates in #9009
- bug: SslConfiguration::setProtocol by @sdelamo in #9118
- Fix SingleResult was unintentionally initialized at build time by @graemerocher in #9126
- Add test for publisher body and null optional query param by @jameskleeh in #9146
- KSP: don't process already processed classes by @graemerocher in #9204
- Use the bean definition type as the bean type for custom scopes. by @graemerocher in #9233
- Correct Groovy storing annotation defaults in stereotype annotations by @graemerocher in #9232
- add @BootstrapContextCompatible to json message readers by @graemerocher in #9263
- Regression Writable in Filter by @sdelamo in #9287
- test: additional types for json codec by @sdelamo in #9273
- failing tests for Constraint handler in Micronaut Framework 4 by @sdelamo in #9246
- refreshAndDiff() should handle array values and property placeholders by @graemerocher in #9312
- Fix property caching by @yawkat in #9313
- Only initialize typeElementVisitors once. by @graemerocher in #9316
- Correct capturing
PropagatedContext
in reactive filters by @dstepanov in #9345 - Attempt to fix NPE in
TypeElementVisitorProcessor
by @dstepanov in #9348 - Fix error when both epoll and iouring are on the classpath by @yawkat in #9352
- Correct Reactor instrumentation hook by @dstepanov in #9356
- Add missing @requires on json mapper by @melix in #9365
- Handle errors in publisher responses in RoutingInBoundHandler by @yawkat in #9320
- KSP: Correct kotlin type identity object by @dstepanov in #9372
- KSP: Correct default method flag by @dstepanov in #9374
- Fix multiple iterable beans not resulting in
NonUniqueBeanException
by @dstepanov in #9399 - Fix SSL context leak by @yawkat in #9413
- fix: JsonMapperSupplier could throw an exception and the next should be consider by @sdelamo in #9445
- remove generic from JsonMapper::writeValueAsString by @sdelamo in #9453
- Fix field target annotations not working with records by @dstepanov in #9493
- KSP: Properly map suspended function class by @dstepanov in #9520
- use binary name to store annotation names in metadata for KSP by @graemerocher in #9536
- fix: txt/plain possible for BigDecimal by @sdelamo in #9535
- fix IllegalArgumentException: Duplicate key with KSP and introspections with ConfigurationBuilder by @graemerocher in #9549
- KSP: Visit synthetic properties in factories with advice by @graemerocher in #9553
Improvements ⭐
- Stop repackaging Caffeine by @graemerocher in #8054
- One channel per HTTP2 stream by @yawkat in #6842
- Match interceptors by all the bindings it defines by @dstepanov in #8174
- Let SemanticVersion.isAtLeastMajorMinor be able to compare two different major versions. by @donbeave in #8208
- Reuse enclosed elements querying for Java and Groovy. Added a way to query methods and fields together. by @dstepanov in #8197
- HTTP Netty server executing route refactoring by @dstepanov in #8217
- Split the runtime and compiler code into separate modules by @graemerocher in #8224
- Split the runtime module into multiple modules by @graemerocher in #8235
- Class -> Class<?> by @altro3 in #8278
- Add support for Jakarta nulllable annotations. by @baracil in #8307
- remove javax.annotation.Nullable usage by @graemerocher in #8311
- Improve support for configuration property nesting by @graemerocher in #8306
- Improve the error message for missing beans when EachBean is used by @graemerocher in #8316
- Improve error messages for disabled beans by @graemerocher in #8326
- Detect deadlocks when using BlockingHttpClient on the event loop by @yawkat in #8354
- Remove NoInjectBeanDefinition and improve/refactor RuntimeBeanDefinition by @graemerocher in #8398
- Eliminate unused proxy targets and simplify resolution by @graemerocher in #8447
- Add tests and refine behaviour of registerSingleton by @graemerocher in #8469
- add isWithin(..) check to each property handling by @graemerocher in #8565
- Support Range requests when returning SystemFiles by @kgeri in #8553
- Optimize HttpRequestCertificateHandler by @yawkat in #8771
- Refactor: Remove unnecessary use of reactive APIs in routes endpoint by @graemerocher in #8795
- Remove more GraalVM build-time init flags by @graemerocher in #8841
- cleanup unnecessary GraalVM flags by @graemerocher in #8843
- Remove jackson databind as a transtive of GraalVM module by @graemerocher in #8869
- Allow to introspect classes by names by @dstepanov in #8899
- tck: static resource test by @sdelamo in #8971
- Unwrap optionals with safe navigation in expressions by @graemerocher in #9024
- Use
Map.of
instead of custom implementation by @dstepanov in #9032 - Add ability to disable log in environments by @altro3 in #8946
- Load ApplicationContextConfigurer with passed classloader instead of the class one by @Goldmensch in #8608
- Allow access to 'this' in expressions / support introspections by @graemerocher in #9123
- tck: Write length and first 10 bytes if bytearray assertion fails by @timyates in #9111
- Support for Comparable types in expressions by @GavrilovSV in #9163
- Fix disable log in environments by @altro3 in #9129
- Ensure JsonNode is serializable/deserializable by default mapper by @graemerocher in #9175
- Do not avoid processing enum methods by @andriy-dmytruk in #9165
- Set default netty maxOrder to 3 by @yawkat in #9231
- Implement custom Netty
RequestBinderRegistry
by @dstepanov in #9243 - Add nullable annotations transformers by @altro3 in #9247
- Make NettyClientSslBuilder pluggable by @yawkat in #9305
- Only convert config placeholders when necessary by @yawkat in #9310
- Use Order instead for event loop factories by @yawkat in #9355
- Preserves original HTTP method while following permanent redirection by @loicgreffier in #9304
- Move filters to new API by @yawkat in #9357
- Improve MessageBodyHandler selection by @andriy-dmytruk in #9347
- Improve error handling in RoutingInBoundHandler by @yawkat in #9360
- Improve scheduled exception handling by @graemerocher in #9373
- missingBeans for EndpointsFilter by @sdelamo in #9380
- imp: add default methods for writeValueAsString by @sdelamo in #9402
- Wait for request body if necessary in filter by @yawkat in #9405
- Allow nullability annotations on generic arguments by @dstepanov in #9407
- Generate Java 17 bytecode by @dstepanov in #9408
- Support time zone in time format for access log by @n0tl3ss in #9415
- Escape header values correctly for access log by @n0tl3ss in #9417
- Use unsafe setters for Jackson by @dstepanov in #9457
- Introduce
UnsafeBeanInstantiationIntrospection
by @dstepanov in #9459 - Fix all-opens support in ksp by @yawkat in #9456
- Jackson instantiate callback by @dstepanov in #9458
- Introduce
PropagatedContext.empty
by @dstepanov in #9473
Docs 📖
- Configuration props for inner classes are now dollar prefixed by @timyates in #8183
- EntityIntrospectedAnnotationMapper class has moved by @timyates in #8244
- Add documentation for virtual thread support by @yawkat in #8577
- Update docs to the new configuration macro by @melix in #8613
- doc: Highlight virtual threads support by @sdelamo in #8734
- doc: use asciidoc inner link by @sdelamo in #8732
- doc: links to session module by @sdelamo in #8788
- Configuration asciidoc macro migration by @wetted in #8745
- Update simple retry doc to mention a linear progression of 1s by @miguelaferreira in #8850
- Remove docs for HTTP sessions and provide link to
micronaut-session
docs by @wetted in #8737 - doc: delete what’s new and breaks prior to 4.0.0 by @sdelamo in #8952
- doc: add websocket dependency by @sdelamo in #8953
- docs: what's new add support Kotlin 1.8.0 by @sdelamo in #8785
- doc: Add KSP section and mention it in what's new by @sdelamo in #8786
- doc: introduction mention server & client runtimes by @sdelamo in #8960
- doc: retry dependency in Advice & HTTP client by @sdelamo in #8961
- doc: don't use Micronaut as a noun by @sdelamo in #8958
- Fix broken link to checkstyle issue img by @Januson in #9047
- Micronaut Framework from 2 to 3 to upgrade repo by @sdelamo in #9200
- doc: fix configuration properties by @sdelamo in #9215
- breaking.adoc cleanup by @wetted in #9411
- Add breaking change note about the removal of
OncePerRequestHttpServerFilter
by @wetted in #9410 - Filter documentation improvements by @yawkat in #9440
- Method binding with no @Body TCK tests, updated docs and docs examples. by @wetted in #9479
- Update what's new docs with GraalVM 23 and HTTP/3 by @graemerocher in #9497
- Document exception if parent of each bean lacks name qualifier by @sdelamo in #9548
- Document module
io.micronaut:micronaut-jackson-databind
by @wetted in #9541
Dependency updates 🚀
- fix(deps): update dependency io.micronaut.crac:micronaut-crac-bom to v1.0.1 by @renovate in #8081
- chore(deps): update plugin me.champeau.jmh to v0.6.8 by @renovate in #8078
- fix(deps): update junit5 monorepo to v5.9.1 by @renovate in #8103
- chore(deps): update mikepenz/action-junit-report action to v3.5.1 by @renovate in #8101
- fix(deps): update managed-testcontainers to v1.17.5 by @renovate in #8105
- fix(deps): update managed-swagger to v2.2.3 by @renovate in #8104
- fix(deps): update dependency io.micronaut.graphql:micronaut-graphql to v3.2.0 by @renovate in #8106
- fix(deps): update managed-kotlin to v1.7.20 by @renovate in #7855
- fix(deps): update dependency io.micronaut.email:micronaut-email-bom to v1.4.0 by @renovate in #8136
- fix(deps): update asm to v9.4 by @renovate in #8133
- fix(deps): update dependency io.micronaut.coherence:micronaut-coherence-bom to v3.7.1 by @renovate in #8135
- fix(deps): update dependency org.codehaus.groovy:groovy-test to v3.0.13 by @renovate in #8132
- fix(deps): update dependency com.fasterxml.jackson.core:jackson-databind to v2.13.4.2 by @renovate in #8168
- chore(deps): update mikepenz/action-junit-report action to v3.5.2 by @renovate in #8166
- chore(deps): update dependency io.micronaut.build.internal:micronaut-gradle-plugins to v5.3.15 by @renovate in #8165
- fix(deps): update managed-micrometer to v1.9.5 by @renovate in #8207
- fix(deps): update dependency io.projectreactor:reactor-core to v3.4.24 by @renovate in #8205
- fix(deps): update dependency io.micronaut.redis:micronaut-redis-bom to v5.3.1 by @renovate in #8204
- fix(deps): update managed-swagger to v2.2.4 by @renovate in #8209
- fix(deps): update groovy monorepo to v4.0.6 by @renovate in #8206
- chore(deps): update dependency org.tomlj:tomlj to v1.1.0 by @renovate in #8211
- fix(deps): update dependency io.micronaut.testresources:micronaut-test-resources-bom to v1.1.3 by @renovate in #8254
- upgrade Jackson version to 2.14.0 by @graemerocher in #8358
- build: bump up slf4j to 2.0.4 and logback to 1.4.4 by @graemerocher in #8360
- fix(deps): update dependency ch.qos.logback:logback-classic to v1.4.5 by @renovate in #8372
- fix(deps): update dependency com.github.javaparser:javaparser-symbol-solver-core to v3.24.9 by @renovate in #8477
- fix(deps): update dependency com.blazebit:blaze-persistence-core-impl to v1.6.8 by @renovate in #8460
- fix(deps): update netty monorepo to v4.1.86.final by @renovate in #8379
- fix(deps): update dependency io.micrometer:micrometer-core to v1.10.2 by @renovate in #8381
- fix(deps): update dependency com.fasterxml.jackson.core:jackson-databind to v2.14.1 by @renovate in #8396
- fix(deps): update httpcomponents-client to v4.5.14 by @renovate in #8536
- Update dependency io.micronaut.tracing:micronaut-tracing-bom to v4.5.0 by @renovate in #8554
- build: micronau-tracing 4.5.0 by @sdelamo in #8672
- build: micronau-tracing 4.5.0 by @sdelamo in #8700
- build: Apache groovy 4.0.9 by @sdelamo in #8784
- chore(deps): update dependency gradle to v7.6.1 by @renovate in #8832
- build: Micronaut Flyway 5.5.0 by @sdelamo in #8887
- Upgrade to Micronaut Spring 4.5.1 by @graemerocher in #8910
- fix(deps): update dependency ch.qos.logback:logback-classic to v1.4.6 by @renovate in #8964
- Bump Jib Maven Plugin version by @alvarosanchez in #8980
- build: netty 4.1.90-Final by @sdelamo in #9019
- fix(deps): update managed-jackson to v2.14.2 by @renovate in #8169
- fix(deps): update managed-slf4j to v2.0.7 by @renovate in #8537
- chore(deps): update plugin com.google.devtools.ksp to v1.8.20-1.0.10 by @renovate in #8676
- fix(deps): update dependency org.testcontainers:spock to v1.17.6 by @renovate in #9044
- build: Kotlin 1.8.20 by @sdelamo in #9055
- chore(deps): update gradle/gradle-build-action action to v2.4.0 by @renovate in #9080
- fix(deps): update netty monorepo to v4.1.91.final by @renovate in #9079
- fix(deps): update junit5 monorepo by @renovate in #9078
- Update to Jackson 2.14.2 by @sdelamo in #9064
- build: Micronaut Security 3.11.0 by @sdelamo in #9087
- CRaC 1.2.2 by @sdelamo in #9088
- fix(deps): update managed-reactor to v3.5.5 by @renovate in #9127
- Update jackson to 2.15.0 by @yawkat in #9150
- Update dependency ch.qos.logback:logback-classic to v1.4.7 by @renovate in #9178
- Update gradle/gradle-build-action action to v2.4.2 [SECURITY] by @renovate in #9186
- Kotlin 1.8.21 KSP update and Coroutines 1.7.0 by @sdelamo in #9202
- Update dependency io.netty.incubator:netty-incubator-transport-native-io_uring to v0.0.21.Final by @renovate in #9193
- Update junit5 monorepo by @renovate in #9229
- Update groovy monorepo to v4.0.12 by @renovate in #9227
- Update dependency org.graalvm.nativeimage:svm to v22.3.2 by @renovate in #9226
- Update dependency io.micronaut.build.internal:micronaut-gradle-plugins to v6.4.4 by @renovate in #9225
- Update managed-reactor to v3.5.6 by @renovate in #9269
- Update managed-kotlin-coroutines to v1.7.1 by @renovate in #9268
- Update dependency org.graalvm.buildtools.native:org.graalvm.buildtools.native.gradle.plugin to v0.9.22 by @renovate in #9113
- Update dependency org.grails:grails-datastore-core to v7.3.4 by @renovate in #8965
- Update dependency io.micrometer:micrometer-core to v1.11.0 by @renovate in #8927
- Update asm to v9.5 by @renovate in #9279
- Update dependency com.github.javaparser:javaparser-symbol-solver-core to v3.25.3 by @renovate in #9283
- Update netty monorepo to v4.1.92.Final by @renovate in #9276
- Update plugin io.micronaut.build.shared.settings to v6.4.4 by @renovate in #9278
- Update dependency com.fasterxml.jackson.core:jackson-databind to v2.15.1 by @renovate in #9280
- Update dependency io.methvin:directory-watcher to v0.18.0 by @renovate in #8380
- Update dependency com.squareup.okio:okio to v3.3.0 by @renovate in #9284
- exclude ControllerConstraintHandlerTest for Server JDK by @sdelamo in #9302
- Update dependency io.micronaut.validation:micronaut-validation-bom to v4.0.0-M8 by @renovate in #9326
- Update dependency org.testcontainers:spock to v1.18.1 by @renovate in #9328
- Update dependency io.micronaut.build.internal:micronaut-gradle-plugins to v6.5.0 by @renovate in #9327
- Update micronaut-sql to v5.0.0-M7 by @renovate in #9323
- Update netty monorepo to v4.1.93.Final by @renovate in #9324
- Update dependency io.micronaut.rxjava3:micronaut-rxjava3-bom to v3.0.0-M2 by @renovate in #9322
- Update plugin io.micronaut.build.shared.settings to v6.5.0 by @renovate in #9335
- Update managed-jackson to v2.15.1 by @renovate in #9334
- Update dependency io.micronaut.reactor:micronaut-reactor-bom to v3.0.0-M3 by @renovate in #9333
- Update selenium to v4.9.1 - autoclosed by @renovate in #9338
- Update dependency org.zalando:logbook-netty to v2.16.0 by @renovate in #9329
- Update dependency com.google.testing.compile:compile-testing to v0.21.0 - autoclosed by @renovate in #8540
- Update dependency io.micronaut.aws:micronaut-aws-bom to v4.0.0-M5 - autoclosed by @renovate in #9285
- Update dependency com.fasterxml.jackson.core:jackson-databind to v2.15.2 by @renovate in #9376
- Update dependency io.micronaut.aws:micronaut-aws-bom to v4.0.0-M5 - autoclosed by @renovate in #9377
- Update dependency io.micronaut.aws:micronaut-aws-bom to v4.0.0-M6 by @renovate in #9385
- Update dependency io.micronaut.session:micronaut-session to v4.0.0-M3 by @renovate in #9379
- Update dependency org.apache.logging.log4j:log4j-core to v2.20.0 by @renovate in #9289
- fix(deps): update dependency io.micronaut.groovy:micronaut-runtime-groovy to v4.0.0-m2 by @renovate in #9394
- chore(deps): update plugin me.champeau.jmh to v0.7.1 by @renovate in #9337
- fix(deps): update jmh to v1.36 by @renovate in #9330
- fix(deps): update dependency net.sourceforge.htmlunit:htmlunit to v2.70.0 by @renovate in #9288
- Update dependency io.micronaut.aws:micronaut-aws-bom to v4.0.0-M8 by @renovate in #9400
- fix(deps): update dependency io.micronaut.reactor:micronaut-reactor-bom to v3.0.0-m5 by @renovate in #9412
- chore(deps): update plugin com.google.devtools.ksp to v1.8.22-1.0.11 by @renovate in #9421
- fix(deps): update dependency io.micronaut.rxjava2:micronaut-rxjava2-bom to v2.0.0-m4 by @renovate in #9422
- fix(deps): update dependency io.micronaut.groovy:micronaut-runtime-groovy to v4.0.0-m3 by @renovate in #9429
- fix(deps): update dependency io.micronaut.aws:micronaut-aws-bom to v4.0.0-m9 by @renovate in #9438
- fix(deps): update dependency io.micronaut.reactor:micronaut-reactor-bom to v3.0.0-m6 - autoclosed by @renovate in #9435
- fix(deps): update dependency ch.qos.logback:logback-classic to v1.4.8 by @renovate in #9443
- fix(deps): update dependency org.graalvm.nativeimage:svm to v23 by @renovate in #9446
- chore(deps): update dependency org.graalvm.buildtools.native:org.graalvm.buildtools.native.gradle.plugin to v0.9.23 by @renovate in #9460
- fix(deps): update dependency io.micronaut.aws:micronaut-aws-bom to v4.0.0-m11 by @renovate in #9471
- Update dependency io.micronaut.rxjava3:micronaut-rxjava3-bom to v3.0.0-M6 by @renovate in #9499
- Update dependency io.micronaut.build.internal:micronaut-gradle-plugins to v6.5.1 by @renovate in #9521
- Update dependency io.micronaut.rxjava2:micronaut-rxjava2-bom to v2.0.0-M6 by @renovate in #9488
- Update dependency io.micronaut.groovy:micronaut-runtime-groovy to v4.0.0-M4 by @renovate in #9475
- chore(deps): update dependency io.micronaut.build.internal:micronaut-gradle-plugins to v6.5.3 by @renovate in #9540
- fix(deps): update dependency com.github.javaparser:javaparser-symbol-solver-core to v3.25.4 by @renovate in #9533
- chore(deps): update plugin io.micronaut.build.shared.settings to v6.5.3 by @renovate in #9542
Regressions 🧐
GraalVM 🏆
- Lazily create the singleton stream-pipeline attribute to fix native image by @timyates in #8125
- Allow context annotations at build time by @timyates in #8485
- Run the HTTP TCK against Netty natively by @graemerocher in #8865
- Allow Tag annotation at build time for the TCK by @timyates in #8904
- Fix GraalVM error on JDK 21 by @graemerocher in #9213
Other Changes 💡
- Upgrade H2 for CVE-2022-23221 by @cristianrgreco in #7000
- Bump managed kotlin version to 1.7.10 by @wetted in #8074
- Remove deprecated code in Micronaut Core for 4.0.x (partial) by @wetted in #8089
- Update to Groovy 4.0 by @timyates in #8010
- Stop relocating caffeine by @timyates in #8143
- Rewrite of Bean Definition processing to use it for both Java and Groovy by @dstepanov in #8121
- Support custom HTTP status codes by @yawkat in #8147
- Allow for Bean Introspection to use different accessor for read and write. by @dstepanov in #8148
- Fix HttpClient.start by @yawkat in #8155
- Fix
ClassElement
equals with primitive and bean property type by @dstepanov in #8163 - Fix STREAM_PIPELINE_ATTRIBUTE by @yawkat in #8162
- Fix use-case when
@Introspected
is added usinganotate
by @dstepanov in #8158 - Correct validation detection by @dstepanov in #8175
- Use v6.0.1 of the internal build tools by @timyates in #8154
- Remove JacksonConfig construtor from HateoasErrorResponseProcessor by @timyates in #8186
- Fix NPE in Groovy processing by @dstepanov in #8182
- New HTTP client connection pooling by @yawkat in #8100
- Support http status 103 and 425 by @SplotyCode in #8123
- Use bean property writer type as the property type. Correct annotations creation for fields. by @dstepanov in #8223
- Select possibly the property field's type if it has type annotations by @dstepanov in #8225
- Fix detecting bean for @ConfigurationInject injection by @dstepanov in #8234
- Require asm as an api dependency so it's pulled in transitively downstream by @timyates in #8243
- Don't relocate ASM references by @graemerocher in #8246
- Improve binary incompatibility for existing processors by @graemerocher in #8250
- build: remove replacement not necessary for 4.0.x by @sdelamo in #8260
- Port fix to 4.0.x and cleanup code by @graemerocher in #8262
- Use serialization and reactor snapshots by @graemerocher in #8266
- Switch to using snapshot of micronaut-groovy by @timyates in #8268
- Fix querying generic arguments by @dstepanov in #8267
- Fix configuration classes with optional getters by @dstepanov in #8269
- Cleanup context after test finishes by @timyates in #8271
- address sonar issues by @graemerocher in #8270
- Removal of Jakarta JSON Glassfish by @graemerocher in #8272
- Add byte[] to String converter by @dstepanov in #8273
- Correct how function method is recognized by @dstepanov in #8283
- Fail when the request is with the incorrect type by @dstepanov in #8261
- Add passing snapshot modules to BOMs by @timyates in #8286
- build: security and email as SNAPSHOT by @sdelamo in #8298
- fix sonar issues by @graemerocher in #8304
- Property type: select the type with the most generic argument annotations by @dstepanov in #8302
- Introduce workaround for javadoc generation by @melix in #8324
- Fix Java generic placeholder annotations by @dstepanov in #8331
- Correct configuration builder and recognition of the property's field by @dstepanov in #8319
- Fix NoSuchMethodError when calling getGenericBeanType() by @graemerocher in #8351
- git: merge up 3.8.x into master by @sdelamo in #8363
- Exclude maven copy of aop for testRuntime by @timyates in #8369
- Fix introduction method order by @dstepanov in #8386
- Make Snakeyaml a managed dependency by @timyates in #8390
- Warn when bean definition class is excluded because of the error by @dstepanov in #8385
- Refactor bean processing module after inject module split by @dstepanov in #8394
- Fix http2 client log warning by @yawkat in #8400
- Improve
BeanDefinitionDelegate
attributes modification by @dstepanov in #8403 - Remove parent module by @melix in #8405
- Add logback as a managed dependency by @timyates in #8388
- Add field generic argument annotation test by @dstepanov in #8409
- Fix Java error element reporting by @dstepanov in #8418
- Fix log error by @yawkat in #8437
- Improve pospone error message by @dstepanov in #8445
- Correct validation by @dstepanov in #8439
- Upgrade to Micronaut Build 6.1.1 by @melix in #8452
- Fix issue injecting qualifier into interceptor by @graemerocher in #8453
- Fix broken ServiceHttpClientCondition by @graemerocher in #8456
- remove the transitive dependency on Guava from core-processor by @graemerocher in #8466
- Add reactor-test as a managed dependency by @timyates in #8470
- Route processing refactor by @yawkat in #8463
- 4.0.x merge by @yawkat in #8492
- Fix intercepted adapter methods by @dstepanov in #8496
- Refactor and cleanup bean context by @dstepanov in #8479
- Fix delegating to intercepted method in Kotlin by @dstepanov in #8498
- Improve intercepted adapter tests by @dstepanov in #8503
- Fix each bean interceptor's qualifier by @dstepanov in #8508
- Fix each bean with a bean annotated
@Named
and@Primary
by @dstepanov in #8510 - Fix intercepted adapter invocation is invoked on the annotated method by @dstepanov in #8515
Publishers#convertPublisher
needs to useConversionService
by @dstepanov in #8517- Use
ConversionService
from bean context forInterceptedMethod
by @dstepanov in #8521 - Remove
FilerOutputStream
inefficiency workaround by @dstepanov in #8529 - Fix
@EachBean
with@Replaces
and a missing class by @dstepanov in #8530 - Merge branch '3.9.x' into 4.0.x by @sdelamo in #8568
- init at build time before instantiating reference by @graemerocher in #8576
- Move to Geb 7 for Groovy 4 support by @timyates in #8575
- Set kotlinOptions.jvmTarget to 17 for 4.0.0 by @timyates in #8579
- build: enable binary compatiblity by @sdelamo in #8571
- Remove unneeded PROXY_TARGET_QUALIFIER by @dstepanov in #8589
- Load bean listeners lazily by @dstepanov in #8595
- Add default annotation values test + remove unused method by @dstepanov in #8611
- Performance improvements + Java style improvements by @dstepanov in #8586
- Fix adding repeatable annotations by @dstepanov in #8618
- Use
PropertyExpressionResolver
for implementing random property values by @dstepanov in #8614 - Links to bootstrap configuration in documentation by @rogervinas in #8609
- Fix NPE in isCandidateBean by @dstepanov in #8631
- Rewrite
AbstractAnnotationMetadataBuilder
bugfixes and tests by @dstepanov in #8632 - Move mutable operations out of the default annotation metadata. Cleanup. by @dstepanov in #8664
- improve KSP error handling by @graemerocher in #8666
- Fix NPE in bean context by @dstepanov in #8665
- add test for #4887 by @graemerocher in #8655
- Don't process overridden interface methods in introduction advice by @graemerocher in #8662
- Add discovery 3.3.0 BOM to build [skip ci] by @timyates in #8659
- build: add back managed-micronaut-discovery by @sdelamo in #8702
- Merge up 3.9.x into 4.0.x by @sdelamo in #8701
- Merge branch '3.9.x' into 4.0.x by @sdelamo in #8726
- Fixes for generic type arguments and their annotations by @dstepanov in #8630
- Run coretto on version named branches by @timyates in #8722
- Correct messaging event publishing by @dstepanov in #8723
- Groovy annotations and generic improvements by @dstepanov in #8740
- don't run listeners for bean providers by @graemerocher in #8742
- Correct how annotations are propagated for generics and build method … by @dstepanov in #8743
- Implement more lenient restrictions on mixed types for getters/setters by @graemerocher in #8757
- Move away from annotation API that now returns defaults by @graemerocher in #8776
- Deflake the BinaryWebSocketSpec by @timyates in #8725
- Support type annotations for Java & Groovy by @dstepanov in #8764
- Fix regression where AliasFor is no longer recursive by @graemerocher in #8746
- Merge branch '3.9.x' into 4.0.x by @sdelamo in #8787
- Fix Object lookup with Groovy. Fixes #8782 by @graemerocher in #8791
- Remove bad merge by @timyates in #8797
- try fix some sonar issues by @graemerocher in #8796
- Deprecate FilterOrderProvider by @yawkat in #8624
- javadoc: remove {@code @NonNullApi} by @sdelamo in #8814
- Rollback changes that have broken Micronaut Serialization by @graemerocher in #8817
- Adding test for headers to verify conformance to HTTP/1.1 4.2 Message Headers specification by @wetted in #8806
- Cleanup GraalVM metadata and used Metadata Repository by @graemerocher in #8821
- Buffered JSON parsing by @yawkat in #8803
- Support type annotations for KSP, generics improvements and bugfixes. by @dstepanov in #8837
- Correct annotating a property for KSP and improve method element annotations by @dstepanov in #8847
- Remove incorrect visitor reference by @dstepanov in #8858
- Replace the validation module with Micronaut Validation dependency by @dstepanov in #8863
- Fallback to trying to load visitor annotations from type by @graemerocher in #8870
- Prepare for Jakarta validation by @dstepanov in #8871
- Correct processing of the inner classes by @dstepanov in #8879
- build: Micronaut Azure 3.9.0 by @sdelamo in #8889
- Support private access for introspected beans by @dstepanov in #8890
- Fix version parsing by @melix in #8897
- Add back the platform for the server-tck tests by @timyates in #8898
- Fix bug preventing scheduled jobs from being ran in the specified time zone by @Gradsta in #8911
- ci: remove build scan url step by @sdelamo in #8909
- Run Corretto nightly instead of every merge by @timyates in #8924
- Migrate to Jakarta validation by @dstepanov in #8916
- Address sonar bugs and smells in 4.0.x branch by @graemerocher in #8928
- Removed mention of default null check behaviour from javadoc by @sorin-silaghi in #8820
- build: remove dependency to validation dependency from core by @sdelamo in #8914
- Include stereotypes into the mapped/remapped annotation value, keep
@Inherited
by @dstepanov in #8932 - Allow for configuration beans to have interceptors by @dstepanov in #8936
- Enable test for streaming h2c requests by @yawkat in #8406
- More mTLS test cases by @yawkat in #8944
- Merge branch '3.9.x' into '4.0.x' by @sdelamo in #8947
- Allow to directly synthesize the annotation value by @dstepanov in #8949
- Correctly propagate annotations default by @dstepanov in #8943
- docs: validation module by @sdelamo in #8957
- ci: Github Actions Sync by @sdelamo in #8970
- Move from
javax.el
tojakarta.el
. by @altro3 in #8966 - build: Apache Groovy 4.0.10 by @sdelamo in #8975
- Embedded HTTP benchmark, various small perf improvements by @yawkat in #8974
- Fix validation tests by @dstepanov in #8983
- Correct KSP parameters matching by @dstepanov in #8989
- Correct KotlinClassElement's
isAssignable
by @dstepanov in #8988 - add missing logback.xml by @wetted in #8987
- Fix race condition in FilterRunner by @yawkat in #9005
- Make Kotlin and Kotlin coroutines versions managed. by @wetted in #8995
- More performance improvements by @yawkat in #8993
- fix java.lang.IllegalArgumentException: duplicate element: ALL_PUBLIC_METHODS by @graemerocher in #9015
- Correct typo in
OutgointRequestProcessorMatcher
classname. by @wetted in #9016 - Support JDK 20 in annotation processors by @dstepanov in #9022
- Improve support for logback 1.3+ by @timyates in #9018
- Enhance TCK server headers test by @timyates in #9025
- Cleanup expressions implementation and improve perf by @graemerocher in #9027
- ci: fold release-notes & sonar in gradle workflow by @sdelamo in #9033
- Make evaluation context objects effectively singleton by @graemerocher in #9034
- Add a class for handling headers in a case-insensitive way by @timyates in #9031
- Update CRaC to 1.2.1 for Micronaut 3.9.0 by @timyates in #8992
- Fix broken incremental compilation with Gradle by @graemerocher in #9038
- Retrieving beans from bean context in expressions by @GavrilovSV in #9041
- Merge branch 3.9.x into 4.0.x by @sdelamo in #9042
- Support JDK 20 in annotation processors (#9022) by @graemerocher in #9048
- Bump Spock to 2.3 and Groovy to 4.0.11 by @szpak in #9054
- Retrieving environment properties in expressions by @GavrilovSV in #9053
- build: add Micronaut Chatbots BOM by @sdelamo in #9056
- More performance optimizations by @dstepanov in #9070
- Performance optimizations: cache executor, optimize HttpMethod enum by @graemerocher in #9063
- Fix Groovy/Spock bug in Kubernetes module by @graemerocher in #9067
- Microoptimizations by @yawkat in #9069
- Make legacy filters work like in Micronaut 3 by @dstepanov in #9071
- KSP: Ignore class element nullability for isAssignable by @dstepanov in #9075
- Expose ConnectionManager for use in Oracle Cloud Netty client by @yawkat in #9073
- Issue 8592 - Update Custom converter docs to use ConversionService bean by @wetted in #8638
- Disable leak detection by default by @yawkat in #9074
- More performance optimizations by @dstepanov in #9076
- Fix buffer leak by @yawkat in #9092
- use Milestone versions by @sdelamo in #9085
- Deprecate
ConversionService.SHARED
and update custom converter docs/examples to use ConversionService bean. by @wetted in #8695 - build: managed-elasticsearch 7.17.9 by @sdelamo in #9102
- Remove unused logback.xml file by @timyates in #9104
- Add targetPackage property to the @introspected annotation by @andriy-dmytruk in #9105
- Avoid the hierarchy annotaiton metadata for @introspected(classes=) by @andriy-dmytruk in #9039
- Replace RoutingInboundHandler and streams handlers by a single handler by @yawkat in #9128
- Add a TCK test for String based Exception handler by @timyates in #9132
- Add interface type arguments test by @dstepanov in #9134
- Merge 3.9.x, fix TCK test and document breakage by @timyates in #9133
- Correct persisting parameter's type annotations by @dstepanov in #9139
- Use StringIntMap for propertyIndexOf by @yawkat in #9137
- Correct persisting parameter's type annotations 2 by @dstepanov in #9142
- Re-enable PTS and Test Distribution for Kotlin by @timyates in #9138
- Mergeup 3.9.x by @timyates in #9135
- Define the property by the first setter in the same class by @dstepanov in #9155
- graal 22.3.2 by @sdelamo in #9166
- Upgrade to latest build plugins by @melix in #9171
- Align build plugins versions used in
buildSrc
by @melix in #9173 - Add postfix to created dummy file to solve conflicts between VisitorContexts. by @altro3 in #9149
- Fixed the startup url print by @filip-filipovic in #9177
- Remove managed logging dependencies by @melix in #9209
- Copy field annotations to the optional getter type argument by @dstepanov in #9203
- Support visitGeneratedFile in KSP / add originating elements to API by @graemerocher in #9212
- Fix not supported error with type use annotations and expression by @graemerocher in #9217
- Use JsonNodeConvertibleValues when deserializing untyped ConvertibleValues by @yawkat in #9219
- Use app conversion service in ConvertibleValuesDeserializer by @yawkat in #9230
- Correct Kotlin mirror types JVM canonical name by @dstepanov in #9235
- Fix for Kotlin test failures after validation upgrade by @graemerocher in #9238
- Remove deprecated code by @dstepanov in #9244
- Replace netty workaround with Http2MultiplexActiveStreamsException by @yawkat in #9237
- Replace
javax.inject.*
,javax.annotations.Nullable
,javax.annotations.Nonnull
with Jakarta annotations by @dstepanov in #9241 - Workaround for recognizing "javax.inject.Named" by @dstepanov in #9252
- Workaround for recognizing "javax.inject.Qualifier" by @dstepanov in #9253
- Reworked ability to disable initializing Slf4J by @altro3 in #9185
- Support around annotations defined on an interface by @dstepanov in #9258
- adds Controller Constraint Handler test by @sdelamo in #9245
- Move TCK tests for Client Filters to client TCK by @timyates in #9296
- update to latest milestones and removes unused versions by @sdelamo in #9303
- Correct propagation tests by @dstepanov in #9342
- Correct propagation tests 2 by @dstepanov in #9343
- Remove deprecated
OncePerRequestHttpServerFilter
by @dstepanov in #9344 - Reduce test logs by @yawkat in #9351
- MDC propagation test by @n0tl3ss in #9350
- Change to reference jdk17 api and jakarta ee docs by @wetted in #9358
- Use reactive modules context propagation instrumentation by @dstepanov in #9359
- Remove obsolete, unsupported reference to
micronaut-test-kotest
(i.e. kotest 4). by @wetted in #9362 - Add new base class for CertificateProvidedSslBuilder, SelfSignedSslBuilder and ACME by @yawkat in #9369
- Support text/json by @yawkat in #9386
- Don't error when a context class is not available by @graemerocher in #9378
- Optimize Propagated context by @dstepanov in #9391
- Fix Sonar issues in Propagated context by @dstepanov in #9393
- Expose NettyClientSslBuilder by @yawkat in #9396
- Add config option to restore legacy text/plain writing behavior by @yawkat in #9311
- ErrorHandlerStringTest fix by @n0tl3ss in #9319
- Enable tcnative even when ALPN is not configured by @yawkat in #9397
- Merge 3.10.x into 4.0.x by @sdelamo in #9404
- Removed metadata that exist in the shared repo by @msupic in #9403
- Remove
javax
workarounds by @dstepanov in #9257 - test: make content type assertion less strict by @sdelamo in #9308
- By default, add JSON additional Types by @sdelamo in #9406
- move default methods from serde ObjectMapper to JsonMapper by @sdelamo in #9424
- Make Publishers.just(Throwable) behave like a Mono by @yawkat in #9425
- tck assertion less strict by @sdelamo in #9419
- Change to show display just major version on banner by @wetted in #9441
- Reactor Context thread-local propagation by @dstepanov in #9452
- Fix NCDFE when snakeyaml is missing by @yawkat in #9467
- Make JustThrowPublisher public by @yawkat in #9468
- Deprecate some unused classes by @yawkat in #9478
- Fix ControllerConstraintHandlerTest for JDK client by @timyates in #9299
- Skip not needed AST elements when a name predicate exists by @dstepanov in #9491
- Add a way to extract the value from
JsonNode
and construct it from it by @dstepanov in #9492 - Core Merge up 3.10.x to 4.0.x by @sdelamo in #9503
- Allow setting of cloud deduction with probes via env vars or property by @timyates in #9508
- core: enable binary compatability check by @wetted in #9505
- Fixed incorrect ability to disable slf4j by @altro3 in #9532
- Fix KSP nullability handling by @graemerocher in #9538
- Manual sync of graalvm workflows by @msupic in #9539
- Delete JsonCodeAdditionalTypeTest.java by @sdelamo in #9544
New Contributors
- @cristianrgreco made their first contribution in #7000
- @donbeave made their first contribution in #8208
- @baracil made their first contribution in #8307
- @kgeri made their first contribution in #8553
- @rogervinas made their first contribution in #8609
- @miguelaferreira made their first contribution in #8850
- @Gradsta made their first contribution in #8911
- @sorin-silaghi made their first contribution in #8820
- @Januson made their first contribution in #9047
- @alexsimpson440dev made their first contribution in #9061
- @Goldmensch made their first contribution in #8608
- @filip-filipovic made their first contribution in #9177
- @loicgreffier made their first contribution in #9304
- @lcavadas made their first contribution in #8072
Full Changelog: v3.8.7...v4.0.0