(十三)java版spring cloud+spring boot+redis社交电子商务平台-springboot集成spring cache...

电子商务社交平台源码请加企鹅求求:一零三八七七四六二六。本文介绍如何在springboot中使用默认的spring cache,

声明式缓存

Spring 定义 CacheManager 和 Cache 接口用来统一不同的缓存技术。例如 JCache、 EhCache、 Hazelcast、 Guava、 Redis 等。在使用 Spring 集成 Cache 的时候,我们需要注册实现的 CacheManager 的 Bean。

Spring Boot 为我们自动配置了 JcacheCacheConfiguration、 EhCacheCacheConfiguration、HazelcastCacheConfiguration、GuavaCacheConfiguration、RedisCacheConfiguration、SimpleCacheConfiguration 等。

默认使用 ConcurrenMapCacheManager

在我们不使用其他第三方缓存依赖的时候,springboot自动采用ConcurrenMapCacheManager作为缓存管理器。

环境依赖

在pom文件引入spring-boot-starter-cache环境依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>
</dependency>复制代码

创建一个book数据访问层

先创建一个实体类

public class Book {private String isbn;
private String title;public Book(String isbn, String title) {this.isbn = isbn;this.title = title;
}
….getter 
….setter}复制代码

创建一个数据访问接口

public interface BookRepository {Book getByIsbn(String isbn);}复制代码

这个你可以写一个很复杂的数据查询操作,比如操作mysql、nosql等等。为了演示这个栗子,我只做了一下线程的延迟操作,当作是查询数据库的时间。

实现接口类:

@Component
public class SimpleBookRepository implements BookRepository {@Overridepublic Book getByIsbn(String isbn) {simulateSlowService();return new Book(isbn, "Some book");}// Don't do this at homeprivate void simulateSlowService() {try {long time = 3000L;Thread.sleep(time);} catch (InterruptedException e) {throw new IllegalStateException(e);}}}复制代码

测试类

@Component
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;}@Overridepublic 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"));}}复制代码

启动程序,你会发现程序在控制台依次打印了:

2014-06-05 12:15:35.783 … : …. Fetching books2014-06-05 12:15:40.783 … : isbn-1234 –> >Book{isbn=’isbn-1234’, title=’Some book’}2014-06-05 12:15:43.784 … : isbn-1234 –>Book{isbn=’isbn-1234’, title=’Some book’}2014-06-05 12:15:46.786 … : isbn-1234 –>Book{isbn=’isbn-1234’, title=’Some book’}复制代码

你会发现程序依次3s打印一行日志。这时还没开启缓存技术。

开启缓存技术

在程序的入口中加入@ EnableCaching开启缓存技术:

@SpringBootApplication
@EnableCaching
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}复制代码

在需要缓存的地方加入@Cacheable注解,比如在getByIsbn()方法上加入@Cacheable(“books”),这个方法就开启了缓存策略,当缓存有这个数据的时候,会直接返回数据,不会等待去查询数据库。

@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 homeprivate void simulateSlowService() {try {long time = 3000L;Thread.sleep(time);} catch (InterruptedException e) {throw new IllegalStateException(e);}}}复制代码

Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求:一零三八七七四六二六


转载于:https://juejin.im/post/5cde718ff265da1bd260b9df

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536456.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建gitlab及部署gitlab-runner

2019独角兽企业重金招聘Python工程师标准>>> 1、搭建gitlab,之前yum安装gitlab,安装后一直报502错误,网上百度试过还是无法使用; 所以这次部署在docker里面;如下命令&#xff1a; docker run --detach --hostname gitlab.forebix.com --publish 4433:443 --publish …

母牛的故事

母牛的故事 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description 有一对夫妇买了一头母牛&#xff0c;它从第2年起每年年初生一头小母牛。每头小母牛从第四个年头开始&#xff0c;每年年初也生一头小母牛。请编程实现在第n年的时候…

软件性能测试

通常&#xff0c;衡量一个软件系统性能的常见指标有&#xff1a; 1、响应时间&#xff08;服务器端响应时间、网络响应时间、客户端响应时间&#xff09; 那客户感受的响应时间其实是等于客户端服务器端网络响应时间 2、吞吐量 软件系统在每单位时间内能处理多少个事务/请求/单…

王小二切饼

王小二切饼 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description 王小二自夸刀工不错&#xff0c;有人放一张大的煎饼在砧板上&#xff0c;问他&#xff1a;“饼不许离开砧板&#xff0c;切n(1<n<100)刀最多能分成多少块&…

SmoothNLP 中文NLP文本处理工具 Python 实战示范

SmoothNLP pythonJavaPython python interfaces for SmoothNLP 的 Python 接口&#xff0c; 支持自动下载底层jar包 &#xff0c;目前支持Python3 Pypi 官方安装 pip3 install smoothnlp 复制代码请注意使用python3安装smoothnlp项目&#xff0c;当前版本 version0.2.4 如果您使…

本地缓存Caffeine

Caffeine 说起Guava Cache&#xff0c;很多人都不会陌生&#xff0c;它是Google Guava工具包中的一个非常方便易用的本地化缓存实现&#xff0c;基于LRU算法实现&#xff0c;支持多种缓存过期策略。由于Guava的大量使用&#xff0c;Guava Cache也得到了大量的应用。但是&#x…

《图解HTTP》核心知识总结

HTTP协议的简介 HTTP是超文本传输协议&#xff0c;用于客户端和服务器端之间的通信&#xff0c;属于TCP/IP中的应用层。 HTTP协议的基础知识 客户端和服务器端 客户端是服务请求方&#xff0c;服务器端是服务提供方。 URI和URL URI:URI是统一资源标识符&#xff1b; URL:是统一…

1042: 筛法求素数

1042: 筛法求素数 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 1387 Solved: 918 [Submit][Status][Web Board] Description 用筛法求之N内的素数。 Input N Output 0&#xff5e;N的素数 Sample Input 100 Sample Output 2 3 5 7 11 13 17 19 23 29 31 37 4…

状态机解析请求行

微信公众号&#xff1a;郑尔多斯关注「郑尔多斯」公众号 &#xff0c;回复「领取资源」&#xff0c;获取IT资源500G干货。升职加薪、当上总经理、出任CEO、迎娶白富美、走上人生巅峰&#xff01;想想还有点小激动关注可了解更多的Nginx知识。任何问题或建议&#xff0c;请公众号…

GO 从零开始的语法学习二

for循环 if条件里不需要括号 err ! nil 判断是否为空 func main(){const filename "abc.txt"contents , err : ioutil.ReadFile(filename); err ! nil{fmt.Println(err)} else{fmt.Printf("%s\n",contents)} } 复制代码if的条件里可以进行赋值if的条件里…

7个有用的Vue开发技巧

1 状态共享 随着组件的细化&#xff0c;就会遇到多组件状态共享的情况&#xff0c;Vuex当然可以解决这类问题&#xff0c;不过就像Vuex官方文档所说的&#xff0c;如果应用不够大&#xff0c;为避免代码繁琐冗余&#xff0c;最好不要使用它&#xff0c;今天我们介绍的是vue.js …

Kewail-邮件短信接口的基础教程

短信接口接入流程开始接入手机短信接口接入操作流程&#xff1a;申请短信签名 → 申请短信模板 → 生成AccessKey → 下载DEMO/攒写接口调用文档 → 免费测试发送 → 购买发信量正式使用。一、申请短信签名接入API接口&#xff0c;通过1069通道发送验证码等短信&#xff0c;必须…

传百度无人车计划分拆,百度回复:不实信息,目前未有分拆计划

据《财经》报道&#xff0c;百度无人车项目正在筹备分拆(spin off)当中&#xff0c;且正在寻找外部投资机构融资。一位接近百度无人车项目人士对《财经》表明&#xff0c;分拆就是时间问题。对于无人车项目分拆一事&#xff0c;百度对 36 氪表示&#xff0c;媒体报道不实。目前…

又见回文

又见回文 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description “回文串”是一个正读和反读都一样的字符串&#xff0c;比如“level”或者“noon”等等就是回文串。现在呢&#xff0c;就是让你判断输入的字符串是否是回文串。 Inpu…

Fighting_小银考呀考不过四级【递推】

Fighting_小银考呀考不过四级 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description 四级考试已经过去好几个星期了&#xff0c;但是小银还是对自己的英语水平担心不已。 小银打算好好学习英语&#xff0c;争取下次四级考试和小学弟小…

从xml中返回的对象,和new 返回的对象时不同的。

public BigDecimal getTax() {return tax null ? BigDecimal.ZERO : tax;} 这是自定义的一个类 对null 做出了处理。 但是如果是直接从xml 查询返回的该对象&#xff0c; tax() 字段还是会产生null <resultMap id"twoToNine" type"" ><result …

三国佚事——巴蜀之危【递推】

三国佚事——巴蜀之危 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description 话说天下大势&#xff0c;分久必合&#xff0c;合久必分。。。却道那魏蜀吴三国鼎力之时&#xff0c;多少英雄豪杰以热血谱写那千古之绝唱。古人诚不我欺…

HTTP Authentication(HTTP认证)(转)

HTTP协议规范中有两种认证方式&#xff0c;一种是Basic认证&#xff0c;另外一种是Digest认证&#xff0c;这两种方式都属于无状态认证方式&#xff0c;所谓无状态即服务端都不会在会话中记录相关信息&#xff0c;客户端每次访问都需要将用户名和密码放置报文一同发送给服务端&…

们--加强斐波那契【递推】

们--加强斐波那契 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description 对于斐波那契数列想必各位已经见过了。这里给出一个加强版。 F[i] i (i < 3); F[i] F[i-1] F[i-2] F[i-3](i > 4); Input 多组输入。每组输入一…

inux CentOS 7 修改内核启动默认顺序

2019独角兽企业重金招聘Python工程师标准>>> inux CentOS 7 修改内核启动默认顺序 2018年12月07日 09:53:32 XueShengke 阅读数&#xff1a;781 转载于&#xff1a;21运维 Linux CentOS 7.X 如何修改内核启动默认顺序 我们知道&#xff0c;centos 6.x是通过/etc/gr…