Prev Next

Spring / Spring Boot 4 Basics Interview Questions

How does Spring Boot 4 support containerised deployments with Docker?

Spring Boot 4 has first-class container support via Cloud Native Buildpacks (CNB), Layered JARs, and GraalVM native image Docker images. The Spring Boot Maven/Gradle plugins can produce optimised Docker images without a Dockerfile.

# Option 1: Buildpacks (recommended -- no Dockerfile needed)
# Maven:
./mvnw spring-boot:build-image
# Produces: docker.io/library/order-service:1.0.0

# With custom image name and registry:
./mvnw spring-boot:build-image \
  -Dspring-boot.build-image.imageName=gcr.io/my-project/order-service:1.0.0

# Native image with Buildpacks:
./mvnw spring-boot:build-image -Pnative

# Option 2: Traditional Dockerfile with Layered JAR
# First, enable layered JAR:
<configuration>
    <layers>
        <enabled>true</enabled>
    </layers>
</configuration>

# Dockerfile (multi-stage, layered JAR):
FROM eclipse-temurin:17-jre AS builder
WORKDIR /app
COPY target/*.jar app.jar
RUN java -Djarmode=tools -jar app.jar extract --layers --launcher

FROM eclipse-temurin:17-jre
WORKDIR /app
# Copy layers in order of least-to-most frequently changed:
COPY --from=builder /app/extracted/dependencies ./
COPY --from=builder /app/extracted/spring-boot-loader ./
COPY --from=builder /app/extracted/snapshot-dependencies ./
COPY --from=builder /app/extracted/application ./
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

# Docker Compose for local development:
# compose.yml (Spring Boot 4 auto-detects compose.yml):
services:
  postgres:
    image: postgres:17
    environment:
      POSTGRES_DB: orders
      POSTGRES_USER: dev
      POSTGRES_PASSWORD: dev
    ports: ["5432:5432"]
  redis:
    image: redis:8
    ports: ["6379:6379"]
# spring.docker.compose.enabled=true (default) auto-starts compose services

What advantage does using Cloud Native Buildpacks (spring-boot:build-image) have over writing a Dockerfile?
What does jarmode=tools in a Spring Boot 4 layered JAR Dockerfile allow?

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