Spring Boot, step by step: understand a request and verify a change
You can read Java and still be unsure who creates a controller, where configuration enters, or which operations a transaction covers. This course follows one ticket API and adds one boundary at a time, so annotations connect to observable behavior.
Continue with the independent JBoss EAP series: foundations and practical workPrerequisites: enough Java to follow the code
You need classes, constructors, interfaces, exceptions, and basic generics. A record is a concise data carrier with accessors and value-oriented methods; this lab reads ticket.id(). HTTP methods, status codes, and JSON are introduced along the way. No prior Spring, Hibernate, or EAP knowledge is assumed, and the IDE is your choice.
The course pins Java 21 and Boot 3.5.16 to match the migration target, not to claim the newest release. Do not copy Boot 4 starters, test imports, or Servlet assumptions into this project without checking. Sources were checked on October 4, 2026; executed lab checks are recorded in the download’s VALIDATION.md.
Six lessons, each ending in a question you can answer
| Lesson | Explain this afterwards | Where to look |
|---|---|---|
| 01 Startup | How main becomes an HTTP application | pom.xml, LabApplication |
| 02 Objects | Who creates services and supplies dependencies | Controller/service constructors |
| 03 Configuration | Which value wins when a key appears three times | LabProperties, properties files |
| 04 HTTP | How JSON reaches a method; where 400/404 are chosen | CreateTicket, ApiErrors |
| 05 Transactions | Whether the first insert rolls back after a later failure | TicketStore, createBatch |
| 06 Evidence | What each test proves; how JAR and WAR differ | LabIntegrationTest, packaged artifact |
One ticket travels through HTTP and a database
HTTP → TicketController → TicketService → TicketStore → H2
↘ ApiErrors → HTTP error responseThe download is one complete small project, not six incompatible snippets. Start with startup and ping, then open the other classes later. A ticket has only id and title. In-memory H2 and JDBC make SQL, commit, and rollback visible without DB2, MQ, or corporate business data.
This learning application binds to loopback and has no login. It does not implement production authorization, auditing, persistent-schema migration, or deployment configuration. Running the lab is not evidence of production readiness. JPA/Hibernate and Spring Security require separate exercises; this course identifies where they fit.
Predict, run, and compare the evidence
Read the question and a small code sample, predict the result, and then run the exercise. Answers follow the exercise so you can pause before checking. When stuck, follow one path: did JSON parsing, validation, or service logic cause the 400? You do not need a whole-repository explanation or notes on every line.
A useful prompt is: “Using only these three files, explain the entry point, object ownership, and failure branch, and identify what the files cannot establish.” Try recalling the path the next day. Pointing to code and tests distinguishes project understanding from a generic summary.
After Spring Boot: EAP and JBoss
The next stage starts with application-server responsibilities: WAR/EAR deployment, module loading, JNDI, data sources, EJB/MDB, transactions, and management logs. JBoss is a product-family and historical name; JBoss EAP is Red Hat’s enterprise application platform. Learn the application first, then identify the responsibilities its external container takes over.
For the broader migration, open the EAP × Boot guideDownload the complete ticket API lab (ZIP)Next: 01: Startup and the first API