🎬 Live Demo

SpringBoard in Action

This is what SpringBoard did to modernize our own legacy Spring Boot 2 application

View Repository:IBM-Bob-Au-Team/spring-boot-2-sample-app
1
✓

Step 1: Analyze Legacy Codebase

IBM Bob scanned our Spring Boot 2.0.2 project and identified outdated dependencies, deprecated APIs, and Java 8 limitations

legacy-app/pom.xml (Before)
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.0.2.RELEASE</version>
</parent>

<properties>
  <java.version>1.8</java.version>
</properties>
OutdatedJava 8Spring Boot 2.0.2
2
✓

Step 2: Create Modernization Plan

Bob generated a prioritized plan with risk assessment for each required change

PriorityChangeRisk
CriticalUpgrade to Spring Boot 3.1.5High
CriticalJava 8 to Java 17Medium
Importantjavax to jakarta migrationMedium
Nice to haveAdd comprehensive JavadocLow
3
✓

Step 3: Refactor the Code

Bob automatically updated pom.xml, 6 Java classes, Dockerfile, and application.properties

- BEFOREDockerfile
FROM maven:3.5.2-jdk-8-alpine AS MAVEN_TOOL_CHAIN
...
FROM java:8-jre-alpine
↓
+ AFTERDockerfile
FROM maven:3.9-eclipse-temurin-17-alpine AS MAVEN_TOOL_CHAIN
...
FROM eclipse-temurin:17-jdk-alpine
✓ pom.xml updated✓ 6 Java files refactored✓ Dockerfile modernized✓ Properties updated
4
✓

Step 4: Generate Tests

Bob wrote JUnit 5 tests with Mockito for all refactored components

Generated Test Files
✓HelloWorldServiceTest.java3 tests
✓ExampleInfoContributorTest.java2 tests
✓HealthIT.java4 integration tests
✓All tests passing9/9 tests
5
✓

Step 5: Ready to Deploy

The modernized app is production-ready with Java 17 and Docker support

Build Docker Image
docker build -t spring-boot-actuator:3.1.5 .
Run Container
docker run -p 8080:8080 spring-boot-actuator:3.1.5
🚀 Deployment Ready
Spring Boot 3.1.5 • Java 17 • Docker • Production Ready
✓

Our Modernization Results

5/5
Steps Completed
9
Files Updated
~8h
Time Saved
100%
Tests Passing

Ready to modernize your own Spring Boot application?

Try with Your Own Repository