背景理解 什么是缓存,为什么要用缓存 程序运行中,在内存保持一定时间不变的数据就是缓存。简单到写一个Map,里面放着一些key,value数据,就已经是个缓存了 所以缓存并不是什么高大上的技术,只是个
背景理解
缓存的思考
SpringCache的好处
@Component
public class MyCache implements Cache {
/*
实现接口方法,一些关于数据set和get的方法
CacheManager是根据Cache的名字进行管理的
所以假设这个Cache名为MyCache
*/
}
@Cacheable(value = "MyCache",key = "#id")
public String getNavegationURLs(String id) {
//一个获取数据的方法
}
注解如何起作用的,源码流程大致了解
代理类原理介绍(AOP切面之类的都是通过代理哦)
首先实现一个InvocationHandler,方法调用会被转发到该类的invoke()方法。
意思是:对代理对象的所有接口方法调用都会转发到InvocationHandler.invoke()方法,在invoke()方法里我们可以加入任何逻辑,比如修改方法参数,加入日志功能、安全检查功能等;之后我们通过某种方式执行真正的方法体
2.CGLIB动态代理,不要求被代理的类需要实现接口,但是final的方法无法被代理(通过继承来实现代理)
那么代理类满足以下条件:
实现一个MethodInterceptor,方法调用会被转发到该类的intercept()方法