Советуют делить пакеты по сущностям/ другим каким-то группам. e.g. класть в пакет order и его подпакеты классы OrderController, OrderService, OrderItemModel,... Так делать для product, animals, aircrafts. В итоге контроллеры, output api разбросаны по пакетам, трудно искать это всё.
Не лучше в корневом пакете создать controller, api пакеты? Тогда кристально чисто видно input/ output в приложении.
А модели, сервисы, компоненты, ... действительно разделять по иерархии пакетам