Когда вы упомянули пакеты для сканирования компонентов, он указывает Spring-контейнер для поиска аннотированных классов в упомянутом пакете, а затем bean-объектов (объектов классов, которые будут иметь @Component или связанные аннотации, такие как @Service, @Controller, @Repository) будет управляться (весь жизненный цикл от создания до уничтожения) весной.Таким образом, в вашем приложении всякий раз, когда вам понадобится один такой компонент, а не его создание, он будет предоставлен контейнером.С другой стороны, если вы не указали 'component-scan', вам придется идентифицировать ваши классы (используя xml или javaConfig), бобами которых вы хотите управлять Spring-container.Теперь эта часть определяла, какие bean-компоненты будут управляться Spring-контейнером.
Далее следует подключение этих bean-компонентов там, где это необходимо.Для этого вы упомянули @Autowired в методе установки.Когда Spring-container встречает эту аннотацию, он будет искать этот bean-компонент (служебный компонент в вашем случае) в контейнере.Поскольку этот bean-компонент управляется контейнером (из предыдущего шага) и доступен при необходимости (в вашем случае в классе контроллера), контейнер предоставит (auto-wire) сервисный bean-компонент в метод setter.