Поясните пожалуйста логику работы Spring с бином

 
 
 
Сообщения:1
Добрый день! Начал "мучать" спринг-веб. Делаю свой небольшой проект. Использую spring-boot-starter-web, spring-boot-starter-test, страницы делаю с помощью thymeleaf.
Хочу прикрутить загрузку файлов на сервер по мануалу.
Есть момент, который для меня пока не понятен. Создаётся класс src/main/java/hello/FileUploadController.java, у него в конструкторе устанавливается связь с бином StorageService таким кодом:
@Autowired
public FileUploadController(StorageService storageService) {
    this.storageService = storageService;
}

Но исходя из примера src/main/java/hello/storage/StorageService.java это интерфейс, вот его листинг оттуда же с сайта:
public interface StorageService {
    void init();
    void store(MultipartFile file);
    Stream<Path> loadAll();
    Path load(String filename);
    Resource loadAsResource(String filename);
    void deleteAll();
}

Объясните пожалуйста "новичку", под капотом спринг сам находит реализацию под StorageService или это какая-то дефолтная реализация для примера, чтобы улучшить понятливость примера? Насколько я читал / смотрел примеры в интернете бины это классы реализации а не интерфейсы...
Я бы понял, если бы была хоть одна реализация, которая бы имплементировала этот интерфейс, с аннотацией @Component, но её нет... С чем спринг работает? :)
Изменен:14 фев 2018 07:18
 
 
Сообщения:214
Конечно есть реализация. Это реализация указывается в виде бина в главном конфигурационном файле спринга. Dependency injection, такие дела.
 
 
Сообщения:9874
Тот мануал говорит:
Quote:
There is an example implementation of the interface in the sample app. You could copy and paste it if you want to save time.
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет