Start here. This is the direct spoken answer to practice first.
Overview
The root package is an application boundary, not just a folder convention.
By default, the package of the @SpringBootApplication class is the base for component scanning, so I place it in a root package above the application's components. I organize code by feature or capability where that keeps controllers, services, policies, and adapters related, rather than creating one global package for every technical layer. Code outside the root is not discovered unless it is imported or scanning is configured explicitly. That makes package placement part of composition.