Start here. This is the direct spoken answer to practice first.
Overview
Profiles select named groups of configuration; conditions express a specific fact that must be true.
A Spring profile activates a named group of beans or configuration, such as local development or a particular deployment mode. Conditional configuration selects beans based on a focused condition such as a property, class, existing bean, or application type. I use profiles for a small number of coherent environment groupings and conditions for a specific capability. Ordinary values such as URLs and timeouts normally belong in external configuration, not separate bean graphs.