2016-04-07 14 views
2

Spring BOOT temelli kitaplar için basit bir REST uygulaması oluşturdum. 3 temel kitabı ekleyen bir/books/addBasicBooks eşlemesi oluşturdum, sadece benim sınamayı sınamak için bir şeyim var, çünkü uygulamayı başlattıktan sonra boş olan bellek deposunda kullanıyorum.İlkbaharda Başlatma yöntemleri

@RequestMapping(value = "/addBasicBooks") 
public List<Book> addBasicBooks() { 
    Book book = new Book.BookBuilder("W pustyni i w puszczy", "Henryk Sienkiewicz").pages(400).build(); 
    Book book1 = new Book.BookBuilder("Dziady IV", "Adam Mickiewicz").pages(300).build(); 
    Book book2 = new Book.BookBuilder("Krzyzacy", "Henryk Sienkiewicz").pages(900).build(); 

    bookRepository.save(book); 
    bookRepository.save(book1); 
    bookRepository.save(book2); 

    return bookRepository.listAll(); 
} 

Eminim, bunu yapmanın daha iyi bir yolu vardır. Uygulama başladığında bu kitapları eklemek için. İlkbaharın bazı çıkış yolları olduğunu duydum, ama hiçbir şey bulamadım.

+0

Veritabanı yapılandırmanızı lütfen paylaşın –

+0

@MatiasElorriaga Ne için? Herhangi bir konfigürasyonum yok, Arraylist'e dayanıyor ve iyi çalışıyor. Uygulama başlamasından sonra tetikleyecek bazı Spring init yöntemine ihtiyacım var. – nowszy94

+0

Sanırım kitabınRepository bazı db isabet ediyor, değil mi? eğer öyleyse, uygulama başladığında okunacak bir sql dosyası ekleyebilirsiniz .. herhangi bir veritabanı yapılandırılmamış mı? –

cevap

2

demo uygulaması için yapmak için son CommandLineRunner türünde bir fasulye eklemektir. Transactios'larınızın kurulumunun gerçekten bir garantisi olmadığından ve aslında kontrol cihazının uygulamanızın bir parçası olmadığı için, yöntemlerine eklemek istemiyorum.

Aşağıdakileri uygulama sınıfınıza ekleyin.

@Bean 
public CommandLineRunner dataInitializer(BookRepository br) { 
    return new CommandLineRunner() { 
     public void run (String... args) throws Exception { 
      // initialize bookRepository 
      Book book = new Book.BookBuilder("W pustyni i w puszczy", "Henryk Sienkiewicz").pages(400).build(); 
      Book book1 = new Book.BookBuilder("Dziady IV", "Adam Mickiewicz").pages(300).build(); 
      Book book2 = new Book.BookBuilder("Krzyzacy", "Henryk Sienkiewicz").pages(900).build(); 

      bookRepository.save(book); 
      bookRepository.save(book1); 
      bookRepository.save(book2); 
     } 
    }; 
} 

Bu, gerçek denetleyicilerinizi ve diğer kodunuzu temiz tutar.

@Controller 
@RequestMapping("/hello-world") 
public class HelloWorldController { 

    @RequestMapping(method=RequestMethod.GET) 
    public List<Book> addBasicBooks() { 
     return bookRepository.listAll(); 
    } 
} 

ben denetleyicisi ama Bahar Önbellek soyutlama kullanabilir veya (JPA kullanılırken) önbellek varlıklara ORM en sağlayıcı ikinci düzey önbelleğe alma desteği kullanmak ya kitap önbelleğe değil tavsiye ediyorum.

2

Denetleyicinin başlatılmasından sonra bellek içi veritabanınızı oluşturmak için Spring'in @PostConstruct özelliğini kullanabilirsiniz. Daha fazla bilgi için bu link bakın. Bakınız bölüm '6.9.8. @PostConstruct ve @PreDestroy '.

böyle bir şey olabilir:

@PostConstruct 
    public void init(){ 
     // initialize bookRepository 
     Book book = new Book.BookBuilder("W pustyni i w puszczy", "Henryk Sienkiewicz").pages(400).build(); 
     Book book1 = new Book.BookBuilder("Dziady IV", "Adam Mickiewicz").pages(300).build(); 
     Book book2 = new Book.BookBuilder("Krzyzacy", "Henryk Sienkiewicz").pages(900).build(); 

     bookRepository.save(book); 
     bookRepository.save(book1); 
     bookRepository.save(book2); 
    } 

    @RequestMapping(value = "/addBasicBooks") 
    public List<Book> addBasicBooks() { 
     return bookRepository.listAll(); 
    } 
3

yazarsın böyle @PostConstruct ile

Something öneki bir yöntemi kullanın:

@Controller 
@RequestMapping("/hello-world") 
public class HelloWorldController { 

    private List<Book> books; 

    @RequestMapping(method=RequestMethod.GET) 
    public List<Book> addBasicBooks() { 
     return books; 
    } 

    @PostConstruct 
    private void onInit(){ 
     Book book = new Book.BookBuilder("W pustyni i w puszczy", "Henryk Sienkiewicz").pages(400).build(); 
     Book book1 = new Book.BookBuilder("Dziady IV", "Adam Mickiewicz").pages(300).build(); 
     Book book2 = new Book.BookBuilder("Krzyzacy", "Henryk Sienkiewicz").pages(900).build(); 

     bookRepository.save(book); 
     bookRepository.save(book1); 
     bookRepository.save(book2); 

     books = bookRepository.listAll(); 
    } 
} 

Ve Statik List eğer oynayabilir siz notu paylaşmak istediğiniz zaman