Start here. This is the direct spoken answer to practice first.
Overview
Prefer the smallest supported customization that expresses application intent and preserves unrelated Boot defaults.
I first look for a documented property because it changes the default without replacing the whole configuration. If the application needs a different implementation, I define the supported bean type so a missing-bean condition backs off. I exclude an auto-configuration class only when the entire feature is inappropriate or conflicting. The condition evaluation report confirms which path matched and prevents guessing.