Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.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 @从其他控制器调用该方法时CacheExit不工作_Java_Spring_Caching_Spring Cache - Fatal编程技术网

Java @从其他控制器调用该方法时CacheExit不工作

Java @从其他控制器调用该方法时CacheExit不工作,java,spring,caching,spring-cache,Java,Spring,Caching,Spring Cache,在spring应用程序中,我们有两个控制器,即controller1、controller2和一个服务,即service1 我想使用方法缓存,为此我配置了spring缓存 我正在使用@Cacheablevalue=cache1缓存service1中名为method1的方法,为了删除缓存,我在service1中另一个名为method2的方法上使用@cacheexecutionvalue=cache1,allEntries=true 因此,缓存工作正常,但逐出并没有按照我希望的那样工作 因此,如果我

在spring应用程序中,我们有两个控制器,即controller1、controller2和一个服务,即service1

我想使用方法缓存,为此我配置了spring缓存

我正在使用@Cacheablevalue=cache1缓存service1中名为method1的方法,为了删除缓存,我在service1中另一个名为method2的方法上使用@cacheexecutionvalue=cache1,allEntries=true

因此,缓存工作正常,但逐出并没有按照我希望的那样工作

因此,如果我从controller1调用method1 cachable方法,它将缓存并从controller1调用method2 cacheExit方法,那么它将正确地删除/逐出cachce,但当我从controller2调用method2 cacheExit方法时,它并不是删除/逐出缓存,而是我希望它这样做

我想在每次调用该方法时逐出/移除缓存,无论从哪个控制器调用该方法


这在大多数情况下是必需的,因为controller1代表客户,controller2代表管理员。我们缓存controller1中使用的方法,并且我们希望在controller2发生任何更新时删除相同的缓存,即admin。

两个主要问题导致此操作出错。它们是:

在控制器中,我们使用annotation@autowire;在服务中,我们使用xmlbean配置。因此,两者都在创建不同的实例,这使得它工作错误

解决方案:对于控制器,我们也以与服务相同的方式在xml中定义

我们在spring中集成了dwr directwebremoting,但没有集成在spring的DispatcherServlet中,因此它可以独立工作,因此服务实例也不同

解决方案:在DispatcherServlet内部集成dwr,如dwr站点中定义的,为了与springMVC应用程序集成,我们采用了另一种方法


请确保该服务只有一个实例,看起来有多个实例。@M.Deinum ya这是一个实例问题,但无法找到解决方法。你能帮助我吗?