Java @cacheexecute注释对私有方法有效吗?
我试图通过spring框架使用@Cachable和@cacheexecute来管理redis缓存。可以在类的私有方法上添加@cacheexecute吗Java @cacheexecute注释对私有方法有效吗?,java,spring,Java,Spring,我试图通过spring框架使用@Cachable和@cacheexecute来管理redis缓存。可以在类的私有方法上添加@cacheexecute吗 Method visibility and @Cacheable/@CachePut/@CacheEvict 使用代理时,应仅将@Cache*注释应用于具有公共可见性的方法。如果使用这些注释对受保护的、私有的或包可见的方法进行注释,则不会引发错误,但注释的方法不会显示已配置的缓存设置。考虑AspectJ(见下面)的用法,如果您需要在更改字节码本
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
方法是没有意义的
注意,对于方面也是如此(如另一个解决方案中所建议的);调用类内方法时也不会触发这些