Как использовать внедрение зависимостей со статическим блоком? - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь создать тестовые данные, чтобы пользователь мог поиграть с приложением Spring. Я подумал о создании отдельного класса в пакете утилит, чтобы сделать это. Моя идея состоит в том, чтобы создать статический блок внутри этого класса, создать несколько объектов и сохранить их в хранилище. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу использовать репозиторий, потому что я не могу использовать инъекцию зависимостей внутри статического блока или репозиторий, внедренный вне кода.

Моя неработающая идея выглядит так:

public class SampleData {

    @Autowired
    BookRepository bookRepository;

    static{

        List<Book> booksToAdd = Arrays.asList(
                new Book("Pan Tadeusz", "Adam Mickiewicz"),
                new Book("Pożegnanie z Bronią", "Ernest Hemingway")
        );

        for(Book book : booksToAdd){
            bookRepository.save(book);
        }

    }
}

Компилятор жалуется на: bookRepository.save(book);, что на него нельзя ссылаться из статического контекста. Вы думаете, что это можно как-то исправить?

Я знаю, что есть также метод с файлом data.sql, но мне не нравится работать с sql, и я ищу решение Java для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...