Java 如何在可缓存中同时使用sync和except?有解决办法吗?

Java 如何在可缓存中同时使用sync和except?有解决办法吗?,java,spring,spring-boot,caching,Java,Spring,Spring Boot,Caching,我有一个需要使用sync的用例,如果方法返回null,我不想缓存。我怎么做 @Cacheable(value = "abc", sync = true, unless = "#result!=null") 目前,Spring中不支持此功能。 我正在使用Spring 5.2.2您是否可以添加更多关于您的用例的信息,例如,为什么不想缓存空值。这是为了避免XY问题。也许有一个很好的解决方案,但并不是特别针对您所要求的。@Cruftex,因为我正在访问一个服务,

我有一个需要使用sync的用例,如果方法返回null,我不想缓存。我怎么做

@Cacheable(value = "abc", sync = true, unless = "#result!=null")
目前,Spring中不支持此功能。
我正在使用Spring 5.2.2

您是否可以添加更多关于您的用例的信息,例如,为什么不想缓存空值。这是为了避免XY问题。也许有一个很好的解决方案,但并不是特别针对您所要求的。@Cruftex,因为我正在访问一个服务,而该服务有时在第一次访问时不会给出结果。基本上,我不想缓存错误或我正在访问的服务返回的任何空值,以便下次当相同的输入消失时,该服务运行正常,我得到我的结果如果null是意外的,我只会在方法体中抛出一个异常。方法的调用方可能不会一致地检查null,因此最好在较低级别捕获它并抛出有意义的异常。如果您的服务返回null,因为没有数据,那么最好返回可选的。OTOH,因为Spring支持空值缓存,所以应该可以检查它。也许Spring专家可以说得更多。@cruftex感谢您的帮助。您可以添加更多关于您的用例的信息,例如,为什么不想缓存空值。这是为了避免XY问题。也许有一个很好的解决方案,但并不是特别针对您所要求的。@Cruftex,因为我正在访问一个服务,而该服务有时在第一次访问时不会给出结果。基本上,我不想缓存错误或我正在访问的服务返回的任何空值,以便下次当相同的输入消失时,该服务运行正常,我得到我的结果如果null是意外的,我只会在方法体中抛出一个异常。方法的调用方可能不会一致地检查null,因此最好在较低级别捕获它并抛出有意义的异常。如果您的服务返回null,因为没有数据,那么最好返回可选的。OTOH,因为Spring支持空值缓存,所以应该可以检查它。也许春天专家可以说得更多。@cruftex谢谢你的帮助。