java – 如何在春季启动时加载@Cache?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何在春季启动时加载@Cache?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含961字,纯文字阅读大概需要2分钟。
内容图文
![java – 如何在春季启动时加载@Cache?](/upload/InfoBanner/zyjiaocheng/711/23cdb145324a4daa8e3b1d50fbcce694.jpg)
我正在使用spring-cache来改进数据库查询,其工作正常如下:
@Bean
public CacheManager cacheManager() {
return new ConcurrentMapCacheManager("books");
}
@Cacheable("books")
public Book getByIsbn(String isbn) {
return dao.findByIsbn(isbn);
}
但现在我想在启动时预先填充完整的书籍缓存.这意味着我想调用dao.findAll()并将所有值放入缓存中.此例程不应仅定期安排.
但是,在使用@Cacheable时,如何显式填充缓存?
解决方法:
只需像以前一样使用缓存,添加一个调度程序来更新缓存,下面是代码片段.
@Service
public class CacheScheduler {
@Autowired
BookDao bookDao;
@Autowired
CacheManager cacheManager;
@PostConstruct
public void init() {
update();
scheduleUpdateAsync();
}
public void update() {
for (Book book : bookDao.findAll()) {
cacheManager.getCache("books").put(book.getIsbn(), book);
}
}
}
确保您的KeyGenerator将返回一个参数的对象(默认情况下).或者,在BookService中公开putToCache方法以避免直接使用cacheManager.
@CachePut(value = "books", key = "#book.isbn")
public Book putToCache(Book book) {
return book;
}
内容总结
以上是互联网集市为您收集整理的java – 如何在春季启动时加载@Cache?全部内容,希望文章能够帮你解决java – 如何在春季启动时加载@Cache?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。