Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring EL中使用数组的内容_Java_Spring_Spring El_Spring Cache - Fatal编程技术网

Java 在Spring EL中使用数组的内容

Java 在Spring EL中使用数组的内容,java,spring,spring-el,spring-cache,Java,Spring,Spring El,Spring Cache,我正在使用Spring的缓存功能。调用以下方法时,我希望退出数组中所有值的缓存receiptObject.resolverIds: @Override @Caching(evict = { @CacheEvict(value = "assignedFeedbacks", key = "#receiptObject.resolverIds[0]"), @CacheEvict(value = "newFeedbacks", key = "#receiptObject.

我正在使用Spring的缓存功能。调用以下方法时,我希望退出数组中所有值的缓存
receiptObject.resolverIds

@Override
@Caching(evict = {
        @CacheEvict(value = "assignedFeedbacks", key = "#receiptObject.resolverIds[0]"),
        @CacheEvict(value = "newFeedbacks", key = "#receiptObject.feedbackObject.serviceId") })
public void addReceipt(ReceiptObject receiptObject) throws Exception {
    feedbackDao.insertReceipt(receiptObject);
}

这里我只使用了第一个元素,但我想将其推广到数组中的所有元素。我该怎么做呢?

我猜您在某处有一个
@Cacheable
方法,如下所示:

@Cacheable(value = "assignedFeedbacks")
public void getReceipt(Object receiptId) throws Exception {
由于
@Caching
注释一次只能处理单个缓存条目,因此没有理由看一看SpEL如何处理数组,因为
键应该是单个对象

我看到的唯一方法是基于直接缓存抽象用法:

@Autowired
private CacheManager cacheManager;

public void addReceipt(ReceiptObject receiptObject) throws Exception {
    feedbackDao.insertReceipt(receiptObject);
    Cache cache = cacheManager.getCache("assignedFeedbacks");
    for (Object receiptId: receiptObject.getResolverIds()) {
        cache.evict(receiptId);
    }
}