网站建设主流开发语言,济南建手机网站哪家好,扬州网站建设哪家好,濮阳推广公司之前一篇博客《java:aocache的单实例缓存》介绍了aoocache使用注解AoCacheable实现单实例缓存的方式#xff0c;同时也指出了这种方式的使用限制#xff0c;就是这个注解定义的构造方法#xff0c;不能再创建出新实例。 为了更灵活方便的实现单实例。aocache最新版本0.4.0增…之前一篇博客《java:aocache的单实例缓存》介绍了aoocache使用注解AoCacheable实现单实例缓存的方式同时也指出了这种方式的使用限制就是这个注解定义的构造方法不能再创建出新实例。 为了更灵活方便的实现单实例。aocache最新版本0.4.0增加了支持单实例缓存的工具类Singleton 为应用层实现单实例缓存提供了更灵活的方式 Singleton提供了weakSingletonOfsingletonOf两种方法分别提供弱引用单实例缓存和普通强引用单实例
weakSingletonOf /*** 返回全局单实例[弱引用缓存]br* 弱引用存储的实例在没有被引用时会被JVM自动回收下次调用自动创建新实例 * param T 实例类型变量* param clazz 实例类型* param parameterTypes 构造方法参数类型数组* param args 构造方法参数对象数组*/AoWeakCacheablepublic static T T weakSingletonOf(ClassTclazz,Class?[] parameterTypes,Object[]args){/** [反射]创建新实例 */return newInstance(clazz,parameterTypes,args);}singletonOf /*** 返回全局单实例[缓存]br* 运行时对给定输入参数返回同一实例* param T 实例类型变量* param clazz 实例类型* param parameterTypes 构造方法参数类型数组* param args 构造方法参数对象数组*/AoCacheablepublic static T T singletonOf(ClassTclazz,Class?[] parameterTypes,Object[]args){/** [反射]创建新实例 */return newInstance(clazz,parameterTypes,args);}简单说weakSingletonOf和singletonOf的不同就是 weakSingletonOf返回的实例有可能不是同一个因为如果JVM回收了实例下次调用返回的就是一个新创建的实例。 而singletonOf是普通强引用模式保存实例所以保证运行时对给定输入参数返回的都是同一实例 所以需要严格单实例的场景就使用singletonOf 只是出于减少实例创建次数的需要就使用weakSingletonOf
项目仓库
访问码云仓库获取完整代码及说明 aocache: aocache(Aspect Oriented Cache)是一个基于aspectJ实现的方法缓存工具。 (gitee.com)