Spring Bootで@Transactional・@Cacheable・@Asyncが効かない原因 - AOPプロキシとself-invocationを理解して解決する
@Transactionalを付けてもロールバックされない、@Cacheableが毎回DBに行く、@Asyncが同期で動く。これらは全てSpring AOPプロキシの仕組みが原因です。self-invocation・private/final・new・有効化漏れの5パターンを再現コードと診断手順で切り分け、別Bean切り出し・自己注入・TransactionTemplateなどの回避策を比較します。