A Spring application is split into layers: controller (HTTP, input validation), service (business rules, transactions), and repository (data access). Each layer only calls the one below it, and entities do not leave the application without going through DTOs.