Start here. This is the direct spoken answer to practice first.
Overview
Grouped configuration deserves a typed contract; one isolated value may not.
@ConfigurationProperties binds a group of related external properties to a typed object, supports relaxed binding and validation, and gives the application one coherent configuration contract. @Value injects an individual expression or property and is convenient for a small isolated value. For a client with URL, timeout, retry limit, and credentials reference, I prefer one validated properties class rather than several strings scattered across beans.