在使用 @Cacheable 注解時(shí),可以通過設(shè)置 cache 的 ttl(time to live)屬性來(lái)指定緩存的有效期。ttl 屬性表示緩存項(xiàng)在緩存中的存活時(shí)間,單位為秒。當(dāng)緩存項(xiàng)超過 ttl 時(shí)間沒有被訪問時(shí),緩存將會(huì)被清除。
以下是一個(gè)示例:
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
@Service
@CacheConfig(cacheNames = "myCache")
public class MyService {
@Cacheable(key = "#id", ttl = 60) // 設(shè)置緩存有效期為60秒
public String getFromCache(int id) {
// 在這里實(shí)現(xiàn)獲取數(shù)據(jù)的邏輯
return "Data for id: " + id;
}
}
在上面的示例中,@Cacheable 注解中設(shè)置了 ttl = 60,表示緩存的有效期為60秒。當(dāng)調(diào)用 getFromCache 方法時(shí),如果緩存中已經(jīng)存在對(duì)應(yīng)的緩存項(xiàng)且未過期,則直接返回緩存的值;如果緩存項(xiàng)已過期或不存在,則執(zhí)行方法邏輯,并將方法返回值放入緩存中并設(shè)置有效期為60秒。
需要注意的是,@Cacheable 注解的 ttl 屬性是在 Spring 4.3 版本中引入的,因此確保你的 Spring 版本支持該屬性。