容器做的。程序员不能手动构造这个类,必须托管给容器。
容器在实例化类型的时候,实际并不是实例化那个类,而是用字节码生成或者其它 AOP 技术,弄个新的加强类型出来,再去实例化加强类型。
那个加强类型,碰到标注着 @Cacheable 的方法,就会特别生成一些字节码,缓存结果。
然而碰到 Android 这些不能支持字节码生成的环境,这个技术直接作废。我这几年都在做 Android,所以都不太爱用 annotation 了。
【 在 dpblue 的大作中提到: 】
: 刚从C++转过来的,觉得Java的annotation挺神奇
: 比如在一个函数前面加上@Cacheable,这样系统就会自动给这个类的对象生成代理对象,以便支持cache
: 这个“系统自动”的动作是怎么实现的呢?
: ...................
--
FROM 120.37.189.*