zoukankan      html  css  js  c++  java
  • AOP中Cache操作实现

    AOP中Cache操作实现

    缓存应用场景

    在业务方法中我们可能调用数据层方法获取数据库中数据,假如访问数据的频率比较高,为了提高的查询效率,降低数据库的访问压力,可以在业务层对数据进行缓存.

    原理图

    使用Cache

    1. 开启配置

    在项目(SpringBoot项目)的启动类上添加@EnableCaching注解,以启动缓存配置。关键代码如下:

    @EnableCaching // 注解表示启动缓存配置
    @SpringBootApplication
    public class Application {
        
    	public static void main(String[] args) {
    		SpringApplication.run(Application.class, args);
    	}
     
    }
    

    2. 应用缓存配置

    在需要进行缓存的业务方法上通过@Cacheable注解对方法进行相关描述.表示方法的返回值要存储到Cache中,假如在更新操作时需要将cache中的数据移除,可以在更新方法上使用@CacheEvict注解对方法进行描述。例如:

    第一步:在相关模块查询相关业务方法中,使用缓存,关键代码如下

    // 在配置了@Cacheable以后, 这个方法返回值会存储到menuCache对应的缓存中.
    // 对于menusCache这个名字对应的缓存的key为实际参数组合后塍SimpleKey对象
    @Cacheable(value = "menuCache") // menuCache为缓存对象的名称(自己起)
    @Transactional(readOnly = true)
    public List<Map<String,Object>> findObjects() {
    ....
    }
    

    其中,value属性的值表示要使用的缓存对象,名字自己指定,其中底层为一个map对象,当向cache中添加数据时,key默认为方法实际参数的组合。

    第二步:在相关模块更新时,清除指定缓存数据,关键代码如下:

    @CacheEvict 注解描述的方法, 表示在方法业务指定过程中要清除缓存

    • value属性: 用于指定要清除的缓存对象
    • allEneries属性: 表示要清除缓存对象中的哪些属性(true)为所有
    • beforeInvocation属性: 表示清除缓存的动作在方法执行之后清除缓存
    @CacheEvict(value = "menuCache", allEntries = true, beforeInvocation = false)
    @Override
    public int saveObject(SysDept entity) {...}
    

    其中,allEntries表示清除所有。

  • 相关阅读:
    Open 5分钟:恺英收集闵懿
    Open 5分钟:摩卡全国宋啸飞
    互联网十大病毒集体名单曝光
    浩大游戏CEO谭群钊:2011将进一步加大海内拓展
    CustomSongSender.com:定制歌曲作为礼物
    米聊:跨运营商收费即时通讯
    说说Google Cloud Connect
    松下将于3月19日出售无需触碰的感触式便携电视
    Groupon中国网站贵客上线 获腾讯云锋基金投资
    诺基亚西门子并购摩托罗案前景堪忧
  • 原文地址:https://www.cnblogs.com/zpKang/p/13374384.html
Copyright © 2011-2022 走看看