Spring Cache – jak skonfigurować cache w springu

W kolejnej części kursu Spring Boota opowiadam o tym jak przyspieszać aplikację poprzez cache’owanie wywołań metod. Pokazuję jak skonfigurować Spring Cache. Omawiam także podstawowe adnotacje potrzebne do używania cache’a.

W filmie opowiadam po kolei, co to jest cache i dlaczego powinniśmy go stosować. Później omawiam konfigurację Spring cache, a także konfiguruje zewnętrznego providera cache’a, czyli Ehcache. Pokazuję także, jak to wszystko działa i jak odpowiednio skonfigurować wpisy dla cache w Ehcache.

W filmie omawiam użycie takich adnotacji jak: @Cachable, @CachePut i @CacheEvict, które w wygodny sposób pozwalają tworzyć i przeładowywać i usuwać cache.

 

W tej części znajdziesz:

  • Co to jest cache?
  • Jak działają metody bez cache?
  • Jak skonfigurować cache w Springu?
  • Jak cache’ować metody w Springu?
  • Jak działa adnotacja @Cachable?
  • Jak dział cache’owanie w Springu?
  • Providery cache dostępne w Springu
  • Konfiguracja Ehcache w aplikacji
  • Konfiguracja cache dla metod
  • Jak działa adnotacja @CachePut?
  • Czyszczenie cache w Springu
  • Jak działa adnotacja @CacheEvict?

 

Github projektu:
https://github.com/matdabrowski/SpringBootTutorialYoutube

 

Linki przydatne w tej części kursu:

Artykuł: Spring AOP – jak używać?

Dokumentacja cache w Spring Framework:
https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#cache

Dokumentacja Cache Spring Boot:
https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-caching

Dokumentacja Ehcache:
https://www.ehcache.org/documentation/3.8/

Dokumentacja konfiguracja xml w Ehcache:
https://www.ehcache.org/documentation/3.8/xml.html

 

Tutaj znajdziesz wszystkie odcinki kursu: Kurs Spring Boot

Mini kurs testy jednostkowe

Mateusz Dąbrowski

Cześć jestem Mateusz, zajmuję się programowaniem już ponad 12 lat z czego ponad 8 programuję w Javie. Zapraszam Cię do lektury mojego bloga. Możesz przeczytać więcej o mnie >>TUTAJ<<

4 thoughts to “Spring Cache – jak skonfigurować cache w springu”

  1. Cześć, dzięki za fajny materiał.
    Wspomniałeś, że dla standardowego (generycznego) providera cache przechowywany jest w mapie, w pamięci.
    Czy w przypadku skorzystania z np. ehcache, standardowo dalej jest to przechowywane w pamięci?

    W jaki sposób można zdefiniować własny storage cache’a?

    1. Tak, dla Ehcache też jest to przechowywane w pamięci, aczkolwiek w Ehcache masz możliwość konfiguracji, czy chcesz to trzymać na Heap (domyślna opcja), czy chcesz to trzymać offheap. No i dodatkowo możesz też na dysku.

      Żeby zdefiniować własny storage, to tak naprawdę trzeba zrobić swojego providera, który implementuje standard JSR 107. W skrócie jest takie api javax.cache.cache-api (znajdziesz w meven repository) i trzeba je zaimplementować 😉
      Pytanie czego Ci brakuje w dostępnych implementacjach, że chcesz robić swój storage?

      1. Pisząc o storage miałem na myśli przechowywanie cache nie inMemory (pewnie niezalecane przy wielu zasobach) oraz nie na lokalnej maszynie (taki mikroserwis uruchomiony na dockerze musiałby mieć zapewne podmontowany własny storage dla poda) a na czymś pokroju Terracotta (jeśli dobrze zrozumiałem zastosowanie tego narzędzia).

        1. ok, jeśli potrzebujesz czegoś więcej w sensie osobnego serwisu, który zapewnia Ci cache, to jest już wiele dostępnych możliwości. Np. Możesz zacząć od Redisa. Redis się klastruje, więc możesz mieć klaster Redisa dostępny dla twoich microserwisów (czy nawet dla jednej aplikacji jak nie masz microserwisów). Możesz też w łatwy sposób odpalić go na dockerze (nie trzeba prawie nic konfigórować w Redisie). I to w większości przypadków na początek wystarczy.

          Jeśli potrzebujesz czegoś innego, to możesz skorzystać z innych dostępnych opcji np. Hazelcast, Infinispan, czy też Terracota.

          Myślę, że nie ma potrzeby pisać swojego providera, chyba że rozważasz tu aspekt edukacyjny (co może być oczywiście ciekawy zagadnieniem i warto się pobawić – wcześniej myślałem, że właśnie o to Ci chodzi 😉).

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *