善用缓存提高你的SPRING工程效率
欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系。本系列教程希望您能站在上帝的角度去观察(了解)Java体系。使Java的各种后端技术在你心中模块化;让你在工作中能将Java各个技术了然于心;能够即插即用。本章我们来一起了解Spring工程中缓存的使用。
缓存可以存储常用到的信息,每次需要的时候我们都可以从缓存中获取,本章我们一起来进行了解Spring的缓存抽象.尽管Spring没有提供任何的缓存的实现,但是它对缓存功能提供了声明式的支持,能够与多种流行的缓存进行集成
我们一般在Spring项目中使用缓存功能我们需要对Spring项目进行一些相关的配置,流程如下
- 启用对缓存的支持
- 配置缓存管理器
- 应用缓存
启用对缓存的支持
JavaConfig配置启用
@Configuration @EnableCaching public class SpringCacheConfig { }
XML配置启用
<!--启用缓存--> <cache:annotation-driven/>
配置缓存管理器
在Sring中我们可以使用很多的缓存管理器的实现
- ConcurrentMapCacheManager
- SimpleCacheManager
- NoOpCacheManager
- CompositeCacheManager
- EhCacheCacheManager
- RedisCacheManager
- GemfireCacheManager
- ...
JavaConfig配置缓存管理器
@Bean public CacheManager cacheManager() { return new ConcurrentMapCacheManager(); }
XML配置缓存管理器
<!--声明缓存管理器--> <bean id="cacheManager" class="org.springframework.cache.concurrent.ConcurrentMapCacheManager"/>
应用缓存
我们经常在项目中使用注解作用在方法上,使其应用缓存,常见的注解如下
注解 | 描述 |
---|---|
@Cacheable | 先查缓存,如果缓存没有调用方法,将返回值放入缓存中 |
@CachePut | 始终都会将返回值放入缓存中 |
@CacheEvict | 在缓存中清除一个或者多个条目 |
@Caching | 分组的注解,能够同时应用多个其他的缓存注解 |
使用示例:查询缓存
@Cacheable(value = "UserCache", key = "#root.args[0]") User getUser(String username);
使用示例:保存缓存
@CachePut(value = "UserCache", key = "#result.username") User save(User user);
使用示例:移除缓存
@CacheEvict("UserCache") void remove(String username);
本章完整工程实例代码下载地址:完整项目演示工程点击下载
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java并发编程之ThreadGroup
ThreadGroup是Java提供的一种对线程进行分组管理的手段,可以对所有线程以组为单位进行操作,如设置优先级、守护线程等。 线程组也有父子的概念,如下图: 线程组的创建 1 public class ThreadGroupCreator { 2 3 public static void main(String[] args) { 4 //获取当前线程的group 5 ThreadGroup currentGroup = Thread.currentThread().getThreadGroup(); 6 //在当前线程执行流中新建一个Group1 7 ThreadGroup group1 = new ThreadGroup("Group1"); 8 //Group1的父线程,就是main线程所在Group 9 System.out.println(group1.getParent() == currentGroup); 10 //定义Group2, 指定group1为其父线程 11 ThreadGroup group2 = new ThreadGroup(group1, "Gro...
- 下一篇
兄弟连区块链教程Fabric1.0源代码分析gRPC(Fabric中注册的gRPC Service)二
区块链教程Fabric1.0源代码分析gRPC(Fabric中注册的gRPC Service)二。 1.3、Endorser Service(背书服务) 1.3.1、Endorser Service客户端 type EndorserClient interface { ProcessProposal(ctx context.Context, in *SignedProposal, opts ...grpc.CallOption) (*ProposalResponse, error) } type endorserClient struct { cc *grpc.ClientConn } func NewEndorserClient(cc *grpc.ClientConn) EndorserClient { return &endorserClient{cc} } func (c *endorserClient) ProcessProposal(ctx context.Context, in *SignedProposal, opts ...grpc.CallOption) (*...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程