ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
**1. `org.springframework.cache.annotation.Cacheable`** ```java //如果某个key没有被缓存则进行缓存,否则直接从缓存中获取数据 ... @Target({ElementType.METHOD, ElementType.TYPE}) public @interface Cacheable { //指定缓存组件Cache名字 @AliasFor("cacheNames") String[] value() default {}; @AliasFor("value") String[] cacheNames() default {}; //指定缓存数据对应的key,默认使用方法参数的值 String key() default ""; //指定key的生成器,key与keyGenerator只能二选一 String keyGenerator() default ""; //指定缓存管理器;或者cacheResolver指定获取解析器 String cacheManager() default ""; String cacheResolver() default ""; //指定符合一定的条件时才缓存数据 String condition() default ""; //指定的条件成立时不缓存数据 String unless() default ""; //是否异步模式 //true则为异步,方法的返回值不会被缓存 //false则不异步,方法的返回值会被缓存 boolean sync() default false; } ``` **2. `org.springframework.cache.annotation.CachePut`** ```java //先调用方法,然后将方法的返回值进行缓存 //即无论某一个key是否被缓存,每次都会更新该缓存 ... @Target({ElementType.METHOD, ElementType.TYPE}) public @interface CachePut { @AliasFor("cacheNames") String[] value() default {}; @AliasFor("value") String[] cacheNames() default {}; String key() default ""; String keyGenerator() default ""; String cacheManager() default ""; String cacheResolver() default ""; String condition() default ""; String unless() default ""; } ``` **3. `org.springframework.cache.annotation.CacheEvict`** ```java //清除缓存 ... @Target({ElementType.METHOD, ElementType.TYPE}) public @interface CacheEvict { @AliasFor("cacheNames") String[] value() default {}; @AliasFor("value") String[] cacheNames() default {}; String key() default ""; String keyGenerator() default ""; String cacheManager() default ""; String cacheResolver() default ""; String condition() default ""; //如果为true则会清除指定的缓存组件中的所有数据 boolean allEntries() default false; //如果为false则缓存清除操作是在方法执行之后执行,这样如果方法内出现异常缓存就不会被清除 //如果为true则清除缓存操作是在方法运行之前执行,无论方法是否出现异常,缓存都会被清除 boolean beforeInvocation() default false; } ``` **4. `org.springframework.cache.annotation.EnableCaching`** ```java //开启缓存支持,SpringBoot项目则通常用在启动类上 ... @Target({ElementType.TYPE}) public @interface EnableCaching { boolean proxyTargetClass() default false; AdviceMode mode() default AdviceMode.PROXY; int order() default 2147483647; } ``` **5. `org.springframework.cache.annotation.Caching`** ```java //用于定义复杂的缓存规则 @Target({ElementType.METHOD, ElementType.TYPE}) ... public @interface Caching { Cacheable[] cacheable() default {}; CachePut[] put() default {}; CacheEvict[] evict() default {}; } ``` **6. `org.springframework.cache.annotation.CacheConfig`** ```java //抽取缓存的公共配置 @Target({ElementType.TYPE}) ... public @interface CacheConfig { String[] cacheNames() default {}; String keyGenerator() default ""; String cacheManager() default ""; String cacheResolver() default ""; } ```