Spring Framework/Spring Bootでは(Java EEとかでもそうだけど)、かつて"controller", "service", "repository"といったレイヤーによってパッケージを分ける構成が主流でした。この"package by layer"の手法はドメインの要求よりもフレームワークといった技術的な制約の中で生まれたものです。というのも、レイヤードアーキテクチャへの過度な適応であったり、パッケージ=レイヤーのほうがクラススキャン・AOPにとって都合が良かったりしたという経緯がありました。 ですが、ドメイン駆動設計(ないしドメインを重要視する志向)の影響もあり、機能やドメインでパッケージをまとめる構成(package by feature)が普及していきます。実際にSpring Bootのリファレンスでは、前述の技術的な制約がなくなってきたこともあり、pa

