Spring 3.1引入注解来使用cache技术
- @EnableCaching 启用缓存注解(写在配置类(@Configuration)或者启动类上面)
@SpringBootApplication
@EnableCaching
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
- @Cacheable 缓存里有就用缓存的(用在方法上)
@Cacheable(value={"aCache","bCache"},key="#id")
Public String get(int id){}
参数:
value即一个String数组可以指定多个cachenames
这个注释的意思是,当调用这个方法的时候,会从一个名叫 aCache和bCache的缓存(缓存本质是一个map)中查询key为id的值,如果不存在,则执行实际的方法(即查询数据库等服务逻辑),并将执行的结果存入缓存中,否则返回缓存中的对象。这里的缓存中的 key 就是参数 id,value 就是 返回的String 对返回的String 对象
- @CacheEvict 用完缓存就清除(方法上)
@CacheEvict(value={"aCache","bCache"})
Public String get(int id){}
value即一个String数组可以指定多个cachenames,单个cachenames可不写value
参数:
allEntries-----默认为false,为true时,不管key,直接清除cachename下所有key的缓存
beforeInvocation--默认为false,为true时,在执行方法前清除缓存
这个注释的意思是,当调用这个方法后,清除名叫 aCache和bCache的缓存
- @CachePut 用完即更新缓存(使用方法与@CacheEvict类似)
@Schedules(cron="0 0,30 * * * ?")
@CachePut("data")
Public Map<String, Object> Data(){}
即每隔30分钟,使用方法后更新名叫data的缓存