Micronaut framework 5 with Jackson 3
by Sergio Del Amo CaballeroSince Micronaut Framework 3.3.0, you can use Micronaut Serialization as an alternative to Micronaut Jackson Databind. Moreover, the framework exposes low-level APIs such as JsonMapper to avoid coupling between serialization implementations.
Micronaut Jackson Databind internally used Jackson 2. With the release of Micronaut 5, Micronaut Jackson Databind (micronaut-jackson-databind) uses Jackson 3. See the Jackson 3 upgrade guide and the Jackson 3 release notes.
To update your application, you can use the Jackson 2 to Jackson 3 OpenRewrite recipe.
plugins {
..
id("org.openrewrite.rewrite")
}
repositories {
mavenCentral()
}
rewrite {
activeRecipe("org.openrewrite.java.jackson.UpgradeJackson_2_3")
}
dependencies {
rewrite("org.openrewrite.recipe:rewrite-jackson:1.11.0")
compileOnly("tools.jackson.core:jackson-databind:2.17.2")
}
- Replace
com.fasterxml.jackson.databind.annotation.JsonDeserializewithtools.jackson.databind.annotation.JsonDeserialize. - Replace
com.fasterxml.jackson.databind.annotation.JsonPOJOBuilderwithtools.jackson.databind.annotation.JsonPOJOBuilder. - Replace
com.fasterxml.jackson.databind.JsonNodewithtools.jackson.databind.JsonNode. - Replace
com.fasterxml.jackson.databind.node.JsonNodeFactorywithtools.jackson.databind.node.JsonNodeFactory. - Replace
com.fasterxml.jackson.databind.node.ObjectNodewithtools.jackson.databind.node.ObjectNode. - Replace
com.fasterxml.jackson.databind.ObjectMapperwithtools.jackson.databind.ObjectMapper. - Replace
com.fasterxml.jackson.databind.PropertyNamingStrategieswithtools.jackson.databind.PropertyNamingStrategies. - Replace
com.fasterxml.jackson.core.JsonParserwithtools.jackson.core.JsonParser. - Replace
com.fasterxml.jackson.core.JsonTokenwithtools.jackson.core.JsonToken. - Replace
com.fasterxml.jackson.core.JsonFactorywithtools.jackson.core.json.JsonFactory. - Replace
com.fasterxml.jackson.core.StreamWriteFeaturewithtools.jackson.core.StreamWriteFeature. - Replace
com.fasterxml.jackson.core.json.JsonReadFeaturewithtools.jackson.core.json.JsonReadFeature. - Replace
com.fasterxml.jackson.core.json.JsonWriteFeaturewithtools.jackson.core.json.JsonWriteFeature. - Replace
com.fasterxml.jackson.core.JsonFactoryBuilderwithtools.jackson.core.json.JsonFactoryBuilder. - Replace
com.fasterxml.jackson.databind.ser.impl.SimpleFilterProviderwithtools.jackson.databind.ser.std.SimpleFilterProvider. - Replace
com.fasterxml.jackson.core.JsonGeneratorwithtools.jackson.core.JsonGenerator. - Replace
com.fasterxml.jackson.databind.jsonFormatVisitors.JsonObjectFormatVisitorwithtools.jackson.databind.jsonFormatVisitors.JsonObjectFormatVisitor. - Replace
com.fasterxml.jackson.databind.ser.BeanPropertyWriterwithtools.jackson.databind.ser.BeanPropertyWriter. - Replace
com.fasterxml.jackson.databind.ser.PropertyFilterwithtools.jackson.databind.ser.PropertyFilter. - Replace
com.fasterxml.jackson.databind.ser.PropertyWriterwithtools.jackson.databind.ser.PropertyWriter.
Exceptions
- Some instances of
com.fasterxml.jackson.core.JsonParseExceptionare nowtools.jackson.core.JacksonException. com.fasterxml.jackson.databind.JsonMappingException(the root for databind exceptions) becomestools.jackson.databind.DatabindException.com.fasterxml.jackson.core.JsonProcessingExceptionbecomestools.jackson.core.JacksonException.com.fasterxml.jackson.databind.exc.InvalidFormatExceptionbecomestools.jackson.databind.exc.InvalidFormatException.
Some internal Micronaut Jackson classes have been relocated:
io.micronaut.jackson.env.JsonPropertySourceLoader→io.micronaut.jackson.core.env.JsonPropertySourceLoader