Start here. This is the direct spoken answer to practice first.
Overview
Both approaches register bean definitions; the useful distinction is where construction policy should live.
Component scanning discovers classes marked with stereotypes such as @Component, @Service, or @Repository within configured packages. An explicit @Bean method registers the object returned by a factory method in a configuration class. I use scanning for application components the team owns and explicit beans when creating third-party classes, choosing among implementations, or making construction parameters and policy visible. Both ultimately contribute bean definitions to the same container.