В этом примере я использовал аннотацию @ComponentScan с атрибутом basePackages. С его помощью Spring также позволяет указывать классы непосредственно. Преимущество пакетов состоит в том, что нужно указывать только их имена.
самым удобным способом добавления бинов в контекст Spring в случае, если классы принадлежат проекту и вы можете их изменить, является применение стереотипных аннотаций (@Component).
Интерфейс Java — это абстрактная структура, которая применяется для объявления определенных обязанностей. Эти обязанности даются объекту, реализующему интерфейс. Другие объекты этого же интерфейса могут выполнять эти обязанности другими способами. Можно сказать, что интерфейс описывает «то, что должно случиться», а каждый отдельный объект — «то, как именно это должно случиться».