tgoop.com/Java_Iibrary/1439
Create:
Last Update:
Last Update:
@CacheEvict
, @CachePut
и @Cacheable
Эти аннотации используются для управления кэшированием.
Сначала включим это, используя @EnableCaching
, как показано ниже:
@SpringBootApplication
@EnableCaching
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Пример:
@Service
public class ProductService {
private final ProductRepository productRepository;
public ProductService(ProductRepository productRepository) {
this.productRepository = productRepository;
}
@Cacheable(value = "products", key = "#id", condition = "#id > 0")
public Product getProductById(Long id) {
// Будет выполнен только если результат отсутствует в кэше
return productRepository.findById(id)
.orElseThrow(() -> new ProductNotFoundException(id));
}
@CachePut(value = "products", key = "#product.id")
public Product updateProduct(Product product) {
// Будет выполнен всегда, и результат обновит кэш
return productRepository.save(product);
}
@CacheEvict(value = "products", key = "#id")
public void deleteProduct(Long id) {
// Удалит запись из кэша
productRepository.deleteById(id);
}
@CacheEvict(value = "products", allEntries = true)
public void clearProductCache() {
// Полностью очистит кэш
}
}