当前位置: 首页 > news >正文

旅游网站的设计与制作html企业网站建设要

旅游网站的设计与制作html,企业网站建设要,成都房产网安居客,房地产最新消息缓存-Spring Cache 缓存抽象 Spring从版本3.1开始提供非侵入的将Cache集成到Spring应用的方式。Spring Cache提供Cache的统一抽象#xff0c;支持集成各种不同的缓存解决方案。从4.1版本开始#xff0c;提供了注解和更多的定制参数。 Spring Cache 抽象提供了对Java方法的缓存…缓存-Spring Cache 缓存抽象 Spring从版本3.1开始提供非侵入的将Cache集成到Spring应用的方式。Spring Cache提供Cache的统一抽象支持集成各种不同的缓存解决方案。从4.1版本开始提供了注解和更多的定制参数。 Spring Cache 抽象提供了对Java方法的缓存使用Spring Cache缓存当方法调用使用相同的参数调用结果被缓存下来当方法被再次调用时将直接返回参数结果。 关键类和接口 Cache org.springframework.cache.Cache 提供Spring框架中使用的Cache的统一抽象功能 具体的实现类使用实际的缓存解决方案。 NoOpCache: 空缓存没有实际的缓存实现EhCacheCache: 使用EhCache缓存方案。CaffeineCache: 使用Java CaffeineCache。Caffeine提出了一种更高效的近似LFU准入策略的缓存结构TinyLFU及其变种W-TinyLFU借鉴Guava Cache的设计经验是一款功能强大性能更优本地缓存。JCacheCache: Javax Cache 标准接口类似于Spring Cache的 JavaJ JSR缓存规范。ConcurrentMapCache: 使用ConccrentMap的缓存实现。TransactionAwareCacheDecorator: 识别Spring 事务的缓存实现装饰模式只要当事务提交时才触发缓存的更新。 CacheManager org.springframework.cache.CacheManager:Spring cache 管理API。不同的CacheManager实现提供对相应Cache实现缓存的管理通过管理API Cache getCache(String name);方法对外提供。 CacheResolver org.springframework.cache.interceptor.CacheResolver 方法调用拦截使用来获取Cache实现的Resolver通常使用相应的CacheManager实现类来获取Cache。 KeyGenerator org.springframework.cache.interceptor. KeyGenerator: 缓存中Key的生成实现。默认的key生成器org.springframework.cache.interceptor.SimpleKeyGenerator 类 1.    方法没有参数则使用SimpleKey.EMPTY 2.    方法只有一个参数key唯一参数 3.    方法有多个参数SimpleKey(params) 可以通过实现org.springframework.cache.interceptor.KeyGenerator接口定制key生成器。 使用Spring Cache 启用Spring Cache Configuration EnableCaching 注解使用 Cacheable: 作用于方法之上配置方法缓存 Cacheable(cacheName): 指定用于缓存结果的缓存名称当指定多个名称时方法调用将在多个缓存中查找相同参数的方法调用命中即返回。 Cache 的key 指定KeyGenerator: Cacheable(cacheNamesXXX, keyGeneratormyKeyGenerator)。 通过SpEL指定key Cacheable(cacheNamesbooks, key#isbn) public Book findBook(ISBN isbn, boolean checkWarehouse, boolean includeUsed) CachePut CachePut指定的方法不影响方法的执行方法执行结果将用于更新缓存。CachePut支持同Cacheable一样的配置。 示例 CachePut(cacheNamesbook, key#isbn) public Book updateBook(ISBN isbn, BookDescriptor descriptor) CacheEvict: 触发缓存清理陈旧或无用的数据。可以配置指定数据的清理或Cache范围的清理。 示例 CacheEvict(cacheNamesbooks, allEntriestrue) public void loadBooks(InputStream batch) Caching: 在一个方法上指定触发缓存的多个操作。 示例 Caching(evict { CacheEvict(primary), CacheEvict(cacheNamessecondary, key#p0) }) public Book importBooks(String deposit, Date date) CacheConfig: 以上的注解都是方法级别的注解CacheConfig提供类级别的公共配置该类下的方法级别配置如无指定则使用类级别上的CacheConfig。 实现方式 Spring AOP 使用 Spring AOP切面实现Cache相关方法的拦截获取缓存和Cache请求的处理 配置切面 所有所有类和所有方法都进行拦截 org.springframework.cache.interceptor.CacheProxyFactoryBean 相关代码: private Pointcut pointcut Pointcut.TRUE;          protected Object createMainInterceptor() {          this.cacheInterceptor.afterPropertiesSet();          return new DefaultPointcutAdvisor(this.pointcut, this.cacheInterceptor); } org.springframework.cache.interceptor.CacheInterceptor 实现 org.springframework.cache.interceptor.MethodInterceptor接口 CacheAspectSupport.execute方法是Spring Cache核心处理流程下面是主要流程的部分代码解析 // 处理CacheEvict请求 processCacheEvicts(contexts.get(CacheEvictOperation.class), true,          CacheOperationExpressionEvaluator.NO_RESULT); // 从缓存中查询是否存在缓存 Cache.ValueWrapper cacheHit findCachedItem(contexts.get(CacheableOperation.class)); // 如未命中生成CachePut请求缓存条件满足 ListCachePutRequest cachePutRequests new ArrayList(); if (cacheHit null) {          collectPutRequests(contexts.get(CacheableOperation.class),                           CacheOperationExpressionEvaluator.NO_RESULT, cachePutRequests); } Object cacheValue; Object returnValue; if (cacheHit ! null !hasCachePut(contexts)) {          //缓存命中并且没有Put需求返回缓存值          cacheValue cacheHit.get();          returnValue wrapCacheValue(method, cacheValue); } else {          //未命中调用对象获取可缓存值          returnValue invokeOperation(invoker);          cacheValue unwrapReturnValue(returnValue); } //检查是否存在CachePut请求 collectPutRequests(contexts.get(CachePutOperation.class), cacheValue, cachePutRequests); // 缓存更新 for (CachePutRequest cachePutRequest : cachePutRequests) {          cachePutRequest.apply(cacheValue); } // 处理缓存Evicts请求 rocessCacheEvicts(contexts.get(CacheEvictOperation.class), false, cacheValue);       return returnValue; }
http://www.zqtcl.cn/news/59419/

相关文章:

  • 网站备案期间可以做推广吗如何给网站更换域名
  • 网站改版 程序变了 原来的文章内容链接地址 打不开怎么办wordpress虚拟插件
  • 教育网站建设需求分析报告网站首页开发
  • 青岛企业建站系统分销系统多少钱
  • 网站开发建站教程详解观影楼网站
  • 洛阳便宜网站建设价格gta买办公室网站建设中
  • 网站如何做rss订阅宁波网站建设公司立找亿企邦
  • 当当网站建设的目标青海小学网站建设
  • 高端型网站制作古交做网站
  • 外贸出口建站医疗器械为什么做网站
  • 珠海市横琴建设局网站做网站要学会什么语言
  • react做的网站有哪些定州网站制作多少钱
  • 天河网站建设策划陕西省建设工程信息网官网
  • 织梦系统 子网站修改散文网站
  • 建设部统计快报网站如何进行电商营销推广
  • 厦门城乡建设厅网站成都今天新闻大事件
  • 郴州免费招聘网站页面设计怎么样
  • 建网站没有公司资质做网站江门
  • 营销型网站建设价格是多少湖南建筑信息网平台
  • 网站开发 方案 报价单山东兴华建设集团有限公司网站
  • 网站自动生成网页郑州一建
  • 男朋友抱着我在教室做网站东莞手机网站模板
  • 如何做网站seo韩小培wordpress插件在哪个文件夹
  • 晾衣架 东莞网站建设主题 wordpress 宾果
  • 做网站还是做阿里国家企业信息查询公示系统官网
  • 电子商务网站建设的一般流程是做金融的网站
  • 做网站软件下载东莞免费网站建设网络营销
  • 第三次网站建设的通报百度快速收录seo工具软件
  • 郑州网站建设服务商建设网站公司招聘
  • 做网站需要报备什么条件人才网网站建设方案