Prev Next

Spring / Spring Boot 4 Basics Interview Questions

What changed with Jackson in Spring Boot 4 and what are the migration considerations?

Spring Boot 4 migrates from Jackson 2 to Jackson 3 as the primary JSON library. This is one of the highest-risk breaking changes for teams upgrading, because several serialisation behaviours change silently -- no compiler error, no deprecation warning, just different JSON output.

Jackson 2 vs Jackson 3 breaking changes
ChangeJackson 2 (Boot 3)Jackson 3 (Boot 4)
Package namespacecom.fasterxml.jacksontools.jackson
Group IDcom.fasterxml.jackson.coretools.jackson
Date serialisationTimestamps (epoch millis) by defaultISO-8601 strings by default (WRITE_DATES_AS_TIMESTAMPS=false)
Property orderingInsertion order by defaultAlphabetical by default (SORT_PROPERTIES_ALPHABETICALLY=true)
Null handlingConfigurableDefault changed; review null serialisation tests
// Jackson 3: package migration
// Old (Jackson 2 / Spring Boot 3):
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.annotation.JsonProperty;

// New (Jackson 3 / Spring Boot 4):
import tools.jackson.databind.ObjectMapper;
import tools.jackson.annotation.JsonProperty;

// Date serialisation change:
// Jackson 2 default: {"createdAt": 1732099200000}
// Jackson 3 default: {"createdAt": "2025-11-20T10:00:00Z"}

// If your API clients expect timestamps, configure explicitly:
@Configuration
public class JacksonConfig {
    @Bean
    public Jackson3BuilderCustomizer timestampCustomizer() {
        return builder -> builder
            .featuresToEnable(DateTimeFeature.WRITE_DATES_AS_TIMESTAMPS);
    }
}

// Automated migration using OpenRewrite:
// Run this recipe to handle package renames:
// org.openrewrite.java.jackson.UpgradeJackson_2_3
// mvn rewrite:run -Drewrite.activeRecipes=org.openrewrite.java.jackson.UpgradeJackson_2_3

// Property ordering change:
// Jackson 2: {"name":"Alice","id":"1","email":"a@b.com"}
// Jackson 3: {"email":"a@b.com","id":"1","name":"Alice"} <- alphabetical!
// Fix tests that compare exact JSON strings character by character

What silent breaking change in Jackson 3 is most likely to cause production incidents after migrating from Spring Boot 3?
What is the new Jackson 3 package namespace that replaces com.fasterxml.jackson?

More Related questions...

What is Spring Boot 4 and when was it released? What is the complete modularisation of Spring Boot 4 and why does it matter? What is the Java version baseline in Spring Boot 4 and what Java features does it unlock? What is Jakarta EE 11 and what changes does it bring in Spring Boot 4? How does Spring Boot 4 auto-configuration work and what is the new @AutoConfiguration annotation? What is native API versioning in Spring Boot 4 and how do you use it? What are JSpecify nullability annotations in Spring Boot 4 and why are they important? What changed with Jackson in Spring Boot 4 and what are the migration considerations? What are @Retryable and @ConcurrencyLimit in Spring Boot 4 and how do they work? What are HTTP Service Clients in Spring Boot 4 and how do you define them? What are the key breaking changes removed in Spring Boot 4 that were deprecated in Boot 3? How does Spring Boot 4 handle dependency injection and what are the core stereotypes? What is Spring Boot's application.properties / application.yml and how does configuration work? What are Spring Boot profiles and how do you use them for environment-specific configuration? How does Spring Boot 4 testing work with @SpringBootTest and test slices? What is Spring Boot Actuator and what does it provide in Boot 4? How does Spring Boot 4 handle data access with Spring Data JPA? What is Spring Security in Spring Boot 4 and what are the key Boot 4 changes? What is the Spring Boot starter parent (POM) and how do you set up a Spring Boot 4 project? What is @SpringBootApplication and what does it combine? How do you build REST APIs with Spring Boot 4 using @RestController? How does Bean Validation work with Spring Boot 4? What is Spring Boot's embedded server and how do you configure it? What is Spring Boot's transaction management with @Transactional? What is Spring Boot's caching abstraction and how do you use it? What is Spring Boot's observability stack in Boot 4 with Micrometer and OpenTelemetry? How does Spring Boot 4 support GraalVM native images? What is Spring WebFlux and reactive programming in Spring Boot 4? What is Spring Boot's exception handling with @RestControllerAdvice? How do you use Spring Data MongoDB and other NoSQL stores in Spring Boot 4? How does Spring Boot 4 handle async processing with @Async? What is Spring Boot's externalized configuration with @Value and @ConfigurationProperties? What is Spring Boot's messaging support with Kafka in Boot 4? How do you schedule tasks in Spring Boot 4 with @Scheduled? What is Spring AI and how does it integrate with Spring Boot 4? How does Spring Boot 4 handle logging configuration? What is Spring Boot 4 migration from Boot 3: complete checklist and common pitfalls? What is Spring Boot DevTools and how does it improve development productivity? How does Spring Boot 4 support containerised deployments with Docker? What is the Spring Boot 4 vs Spring Boot 3 comparison and what are the key takeaways?
Show more question and Answers...


Comments & Discussions