Według link, najprostszej konfiguracji używać pamięci podręcznej w bagażniku wiosennym korzysta CacheManager (an cache Mapa będzie zainicjowany w tej klasie):Wiosna bagażnika cache Nie cache może być rozwiązany za Builder
@Configuration
@EnableCaching
public class CacheService extends CachingConfigurerSupport {
@Bean
public CacheManager concurrentMapCacheManager() {
ConcurrentMapCacheManager cmcm = new ConcurrentMapCacheManager();
return cmcm;
}
@Bean
@Primary
public CacheManager guavaCacheManager() {
GuavaCacheManager gcm = new GuavaCacheManager();
return gcm;
}
}
aw serviceImpl.java
:
@Cacheable(cacheManager="guavaCacheManager")
@Override
public List<RoleVO> getDataForCreateNewOperator() {
...
}
Ale to rzuca:
java.lang.IllegalStateException: No cache could be resolved for 'Builder[public java.util.List getDataForCreateNewOperator()] caches=[] | key='' | keyGenerator='' | cacheManager='guavaCacheManager' | cacheResolver='' | condition='' | unless='' | sync='false'' using resolver '[email protected]10'. At least one cache should be provided per cache operation.
EDYCJA: jeśli przypisać cacheName w cacheManager i używać go w zalecanej metody, wyjątek zniknął. Ale wszystkie metody w komponencie bean byłyby buforowane, a ja przypisałem tylko jedną metodę - @Cacheable
.
Czy próbowałeś coś takiego: @Cacheable (cacheNames = "cache-name") na swojej metody repozytorium? – Afridi
@Afridi tak, próbowałem, a to działa. Ale nie dynamiczny, który również powinien działać. Poza tym, używając cacheName, chociaż wyjątek zniknął, ale powoduje, że cała klasa jest buforowana, a nie tylko metoda. – Tiina