SpringBoot缓存数据(官方案例)

该项目是一个SpringBoot应用,展示了如何启用缓存来加速图书存储库的查询。通过@Cacheable注解实现方法级缓存,提高获取同一书籍信息的效率。项目包括初始和完整版本,以及使用CommandLineRunner进行的测试,显示了缓存效果。
摘要由CSDN通过智能技术生成
  1. 在线文档
  2. 项目结构
    1.源码克隆:git clone https://github.com/spring-guides/gs-caching.git
    2.包含两个项目initial和complete,initial可以根据文档练习完善,complete是完整项目
    3.功能描述:构建应用程序,在图书存储库上启用缓存,获取同一本书的第二次和后续时间要快得多

  3. 源码分析

    1.POM依赖
    <dependencies>
    	<!--https://blog.csdn.net/tongxin_tongmeng/article/details/128579882-->
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-cache</artifactId>
    	</dependency>
    
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-test</artifactId>
    		<scope>test</scope>
    	</dependency>
    </dependencies>
    2.入口类
    // https://blog.csdn.net/tongxin_tongmeng/article/details/128401278
    @SpringBootApplication
    @EnableCaching
    public class CachingApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(CachingApplication.class, args);
    	}
    
    }
    3.图书获取
    @Component
    public class SimpleBookRepository implements BookRepository {
    
    	@Override
    	@Cacheable("books")
    	public Book getByIsbn(String isbn) {
    		simulateSlowService();
    		return new Book(isbn, "Some book");
    	}
    
    	// Don't do this at home
    	private void simulateSlowService() {
    		try {
    			long time = 3000L;
    			Thread.sleep(time);
    		} catch (InterruptedException e) {
    			throw new IllegalStateException(e);
    		}
    	}
    
    }
    4.测试类
    @Component
    // https://blog.csdn.net/tongxin_tongmeng/article/details/128402169
    public class AppRunner implements CommandLineRunner {
    
    	private static final Logger logger = LoggerFactory.getLogger(AppRunner.class);
    
    	private final BookRepository bookRepository;
    
    	public AppRunner(BookRepository bookRepository) {
    		this.bookRepository = bookRepository;
    	}
    
    	@Override
    	public void run(String... args) throws Exception {
    		logger.info(".... Fetching books");
    		logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234"));
    		logger.info("isbn-4567 -->" + bookRepository.getByIsbn("isbn-4567"));
    		logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234"));
    		logger.info("isbn-4567 -->" + bookRepository.getByIsbn("isbn-4567"));
    		logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234"));
    		logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234"));
    	}
    
    }
  4. 项目演示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

童心同萌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值