New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
是否支持同一个类内部不同方法调用时也走缓存 #78
Comments
可以加,实现的时间不能保证 |
同求额。。。 |
同求 |
你可以把A类注入到A类,然后A.method_2 ( )就可以了啊 |
在SpringBoot的启动类增加注解:
A接口
B类
这样就可以实现同类之间调用也走缓存 |
请问这个TODO目前有没有计划? |
现在有点不想做了。 如果this调用也走缓存需要引入AspectJ,AspectJ比较小众,配置很复杂,估计很多人都搞不定。比如AspectJ和Spring AOP混用时要特别指定哪些Bean走Spring AOP哪些走AspectJ,为了织入AspectJ的Aspect需要对编译后的字节码进行加强处理,或者搞LTW,还有额外的配置文件。 现在想要同类调用走缓存有个简单的办法,在bean中通过Autowired注解注入自己,然后使用注入的实例(而不是this)来调用方法,就可以了。 |
楼上有位大哥提到了注解 |
这种是常见的 spring aop 嵌套调用时内部aop失效的问题 问题原因:在使用 Spring AOP 的时候,我们从 IOC 容器中获取的 Bean 对象其实都是代理对象,而不是那些 Bean 对象本身,而当在自己的 Service 类中使用 this 关键字嵌套调用同类中的其他方法时,由于 this 关键字引用的并不是该 Service Bean 对象的代理对象,而是其本身,故 Spring AOP 是不能拦截到这些被嵌套调用的方法的。 下面是2种解决方法:1、类自我注入,使用@lazy和@Autowired注解实现自我注入,然后使用时用注解的实例代替this调用方法。 |
我就是controller 层 调service 层,这样也走不到缓存,以前还是好好的,今天突然来测试发现这类里面的所有方法缓存都不起作用了,其他地方的方法缓存可以用,这是遇到的一个大坑,不晓得什么原因造成的。哪位大神知道怎么解决,请联系qq:493966729
|
classe A{
method_1 ( ){
return method_2 ( );
}
@cached
method_2 ( ){
}
}
spring 原有的cache模块可以用AspectJ+LTW实现类内部方法相互调用也走缓存。jetcache是否支持?
The text was updated successfully, but these errors were encountered: