Инициализировать список объектов при запуске Spring boot

#spring-boot #spring-mvc

#spring-boot #spring-mvc

Вопрос:

У меня есть список объектов Book, которые необходимо инициализировать при запуске Spring boot. Список книг постоянен, и из-за оптимизации БД я не хочу хранить данные в базе данных и вызывать их каждый раз.

Класс Book выглядит следующим образом:

 Class Book{
   private String name;
   private String author;
   private int pages;
   private boolean issued;
}

constructors, getters and setters ....
  

Предположим, у меня есть 3 книги как (book1, author1,100, true), (book2,author2,50, false) и (book3,author3,350, true)

Какой наилучший способ инициализации списка при запуске Spring. Более того, как только инициализация будет выполнена, это лучший способ, которым я могу вернуть его через метод Get endpoint в контроллере как

 @GetMapping(value="/books")
public List<Book> getBooks(){
  ....
  return <List of three books>;
}
  

Заранее спасибо.

С уважением, Sameekshya

Ответ №1:

 @Component
public class BookService implements CommandLineRunner {

    private List<Book> bookList = new ArrayList<>();

    getters();
 
    @Override
    public void run(String...args) throws Exception {
      // add book to the bookList
    }
}
  

Получить доступ к списку объектов в контроллере —

 @Autowired
private BookService service;

@GetMapping(value="/books")
public List<Book> getBooks(){
  ....
  return service.getBookList();
}