Springboot-Cache funktioniert nicht auf nachfolgenden bei Bedarf klaren Cache-Aufrufe

wird die db nicht getroffen, sie erhält immer noch die Daten aus dem Cache, obwohl sie im vorherigen clearCache-Aufruf gelöscht wurden.

Bitte führen Sie mich, vielen Dank im Voraus

http://localhost:8265/myApp/customers/customersInfo Dies funktioniert gut mit Scheduler und ersten Aufrufen der clearCache-Methode, kann die DB aber auch nach dem Cache-Clear in den vorherigen Aufrufen nicht erneut aufrufen.

@GetMapping(value = "/getCustomers" , produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Customers> getCustomers(HttpServletRequest request,
        @RequestParam(name = "clearCache", required = false) boolean clearCache) {
    logger.info("Entered getCustomers() clearCache {}", clearCache);
    ResponseEntity response = new ResponseEntity(new ErrorResponse("Exception while retrieving customers data"),
            new HttpHeaders(), HttpStatus.INTERNAL_SERVER_ERROR);
    try{
        List<CustomersInfo> customers = custService.getCustomers(clearCache);
        response = getCustomersResponse(customers);
    }catch (Exception e) {
        logger.error("Exception in getCustomers()"+ e);
    }
    return response;
}



@Autowired
private CacheService cacheService;

@Cacheable("customers")
public List<CusteomrsInfo> getCustomers(boolean clearCache) {
    logger.info("Entered getCustomers() cacheClear {} ", clearCache);
    List<LocationInfo> localCompanies = new ArrayList<>();

    if (clearCache) {
        logger.info("............... requested to clear the cache...............");
        cacheService.evictCache();
    }
    getAllCustomers();
  }



  @Service
  public class CacheService {
   private static final Logger logger = LoggerFactory.getLogger(MyService.class);

    @Autowired
    CacheManager cacheManager;

    public void evictCache() {
       logger.info("Clearing cache...............");
       cacheManager.getCache("customers").clear();
    }


     @Scheduled(fixedRate = 240000)
     public void evictCacheAtIntervals() {
       evictCache();
     }

Habe ich sowohl automatisch als auch auf Anfrage einen klaren Cache-Mechanismus.

Es funktioniert zunächst (trifft die db), wenn ich den folgenden Endpunkt aufrufen http://localhost:8265/myApp/customers/customersInfo?clearCache=true

aber später

Ich habe eine springboot-Anwendung, für die ich Cache auf eine Methode angewendet habe, um meine Resultsets zwischenzuspeichern.

Antwort auf "Springboot-Cache funktioniert nicht auf nachfolgenden bei Bedarf klaren Cache-Aufrufe " 2 von antworten

Versuchen Sie, "if (clearCache) " nach getCustomers()-Methoden hinzuzufügen.

Meine ich nach der Nutzung der aktuellen Sitzung.

Ich habe dies platziert, bevor ich custService.getCustomers()

Ich habe dies behoben, das Problem wurde evictCache() wurde unter die Methode mit @Cacheable platziert.