Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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 @cacheexecute注释对私有方法有效吗?_Java_Spring - Fatal编程技术网

Java @cacheexecute注释对私有方法有效吗?

Java @cacheexecute注释对私有方法有效吗?,java,spring,Java,Spring,我试图通过spring框架使用@Cachable和@cacheexecute来管理redis缓存。可以在类的私有方法上添加@cacheexecute吗 Method visibility and @Cacheable/@CachePut/@CacheEvict 使用代理时,应仅将@Cache*注释应用于具有公共可见性的方法。如果使用这些注释对受保护的、私有的或包可见的方法进行注释,则不会引发错误,但注释的方法不会显示已配置的缓存设置。考虑AspectJ(见下面)的用法,如果您需要在更改字节码本

我试图通过spring框架使用@Cachable和@cacheexecute来管理redis缓存。可以在类的私有方法上添加@cacheexecute吗

Method visibility and @Cacheable/@CachePut/@CacheEvict
使用代理时,应仅将@Cache*注释应用于具有
公共可见性的方法。如果使用这些注释对受保护的、私有的或包可见的方法进行注释,则不会引发错误,但注释的方法不会显示已配置的缓存设置。考虑AspectJ(见下面)的用法,如果您需要在更改字节码本身时注释非公共方法。


Ref:

@Cacheable
仅在bean之间调用时进行计算,即使对于公共方法也是如此。Ie为此:

public class MyBean {

@Cacheable
public String getString(int i) {
    return Integer.toString(i);
}
public void myOtherMethod() {
    String myString = getString(2);
}
}
缓存将不会被触发

因此,用
@Cacheable
声明
private
方法是没有意义的

注意,对于方面也是如此(如另一个解决方案中所建议的);调用类内方法时也不会触发这些