当前位置: 首页 > news >正文

介绍做素食的网站网站推广做什么

介绍做素食的网站,网站推广做什么,小说网站开发 项目计划书,哪个公司做网站Spring Cache spring cache是一个框架,实现类基于注解的缓存功能,只需要简单的加一个注解,就能实现缓存功能,大大简化我们在业务中操作缓存的代码。 spring cache只是提供了一层抽象,底层可以切换不同的cache实现&am…

Spring Cache

spring cache是一个框架,实现类基于注解的缓存功能,只需要简单的加一个注解,就能实现缓存功能,大大简化我们在业务中操作缓存的代码。

spring cache只是提供了一层抽象,底层可以切换不同的cache实现,具体就是通过cacheManager接口来统一不同的缓存技术。CacheManager是spring提供的各种缓存技术抽象接口。

针对不同的缓存技术需要实现不同的cacheManager

CacheManager描述
EhCacheCacheManager使用EhCache作为缓存技术
GuavaCacheManager使用Google的GuavaCache作为缓存技术
RedisCacheManager使用Redis作为缓存技术

注解

在SpringCache中提供了很多缓存操作的注解,常见的是以下的几个:

注解说明
@EnableCaching开启缓存注解功能
@Cacheable在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中
@CachePut将方法的返回值放到缓存中
@CacheEvict将一条或多条数据从缓存中删除

在spring boot项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用**@EnableCaching**开启缓存支持即可。使用Redis作为缓存技术,只需要导入Spring data Redis的maven坐标即可。

框架使用步骤:

导入pom文件

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>
</dependency>

配置Redis的key的序列化器

// com.atguigu.spzx.cache.config;
@Configuration
public class RedisConfig {@Beanpublic CacheManager cacheManager(LettuceConnectionFactory connectionFactory) {//定义序列化器GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()//过期时间600秒.entryTtl(Duration.ofSeconds(600))// 配置序列化.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(stringRedisSerializer)).serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(genericJackson2JsonRedisSerializer));RedisCacheManager cacheManager = RedisCacheManager.builder(connectionFactory).cacheDefaults(config).build();return cacheManager;}}

3、在启动类上添加**@EnableCaching**注解

4、方法上添加**@Cacheable**注解

@Cacheable

1.作用:在方法执行前,spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据,若没有数据,调用方法并将方法返回值放到缓存中。

2.value:缓存的名称,每个缓存名称下面可以有多个key

3.key:缓存的key 支持spring的表达式语言SPEL语法

Spring 表达式语言(SpEL)

是一种在 Spring 框架中使用的表达式语言,它提供了一种在运行时对对象图进行查询和操作的强大方式。SpEL 的语法相对简洁且易于使用,其主要特点包括:

  1. 引用对象属性:使用 #{} 将属性名包裹起来,如 #{user.name} 表示引用了 user 对象的 name 属性。
  2. 引用集合元素:使用 [] 语法引用集合中的元素,如 #{userList[0]} 表示引用了 userList 集合的第一个元素。
  3. 调用方法:可以使用 . 语法调用对象的方法,如 #{user.getName()} 表示调用了 user 对象的 getName() 方法。
  4. 运算符:支持常见的数学运算符(+, -, *, /)以及逻辑运算符(and, or, not)等。
  5. 条件运算:支持三元条件运算符 condition ? trueValue : falseValue
  6. 正则表达式匹配:使用 matches 关键字进行正则表达式匹配。
  7. 集合选择:通过 . 语法对集合进行筛选,如 #{userList.?[age > 18]} 表示从 userList 中选择年龄大于 18 的用户。
  8. 投影运算:使用 . 语法对集合进行投影操作,如 #{userList.![name]} 表示从 userList 中提取所有用户的 name 属性。
  9. Ternary 操作符:类似 Java 中的 ?: 操作符,用于条件判断。
  10. 安全导航运算符:使用 ?. 来避免 NPE(NullPointerException),如果属性为空,则不会抛出异常。

这些是 SpEL 中的一些主要语法特点,它提供了灵活而强大的功能,可以在 Spring 中的诸多场景下使用,如注解、配置文件、XML 配置等。 SpEL 的语法规则相对简洁清晰,使得开发者能够轻松地在 Spring 应用中进行对象图的操作和查询。

//首先根据key查询redis中的值并返回  如果redis中没有值,则返回当前方法返回的对象
@Override
@Cacheable(value = "userCache",key = "#userId")
public User findById(Long userId){User user = new User();user.setAge(18);return user;
}

@CachePut

作用:将方法返回值,放入缓存

value:缓存的名称,每个缓存名称下面可以有很多key

key: 缓存的key 支持spring的表达式语言SPEL语法

当前UserController的save方法是用来保存用户信息的,我们希望在该用户信息保存到数据库的同事,也在缓存中缓存一份数据,我们可以在save方法上加上注解@CachePut,用法如下:

@CachePut(value = "userCache",key = "#user.userName")
public User saveUser(User user){return user
}

key的写法如下:

#user.id: #user指的是方法形参的名称,id指的是user的id属性,也就是使用user的id属性作为key

#user.userName: #user指的是方法形参的名称,name指的是user的name属性,也就是使用user的name属性作为key

#result.id: #result代表方法返回值,该表达式代表以返回对象的id属性作为key

#result.userName:#result代表方法返回值,该表达式代表以返回对象的name属性作为key

@CacheEvit

作用:清理指定缓存

value:缓存的名称,每个缓存名称下面可以有多个key

key:缓存的key —>支持spring的表达式语言SPEL语法

当我们在删除数据库user表的数据的时候,我们需要删除缓存中对应的数据,此时就可以使用@CahceEvit注解,具体使用方式如下:

@CacheEvit(value = "userCache", key = "#userId")
public void deleteById(Long userId){log.info("用户数据删除成功....")
}

文章转载自:
http://lothsome.c7629.cn
http://cogas.c7629.cn
http://indiscernible.c7629.cn
http://pleading.c7629.cn
http://tractarian.c7629.cn
http://injector.c7629.cn
http://practicoinert.c7629.cn
http://algous.c7629.cn
http://depeter.c7629.cn
http://sanitationman.c7629.cn
http://bedspace.c7629.cn
http://importance.c7629.cn
http://telecentre.c7629.cn
http://cursive.c7629.cn
http://surjection.c7629.cn
http://slumberland.c7629.cn
http://adige.c7629.cn
http://togae.c7629.cn
http://littery.c7629.cn
http://augite.c7629.cn
http://liberty.c7629.cn
http://humic.c7629.cn
http://pockmark.c7629.cn
http://tirelessly.c7629.cn
http://farcetta.c7629.cn
http://cask.c7629.cn
http://tuppenny.c7629.cn
http://titration.c7629.cn
http://inbreath.c7629.cn
http://disoperation.c7629.cn
http://progression.c7629.cn
http://wondrous.c7629.cn
http://bilharziosis.c7629.cn
http://erasmus.c7629.cn
http://accent.c7629.cn
http://crustaceous.c7629.cn
http://pacifiable.c7629.cn
http://soaked.c7629.cn
http://foretold.c7629.cn
http://salishan.c7629.cn
http://henan.c7629.cn
http://rorty.c7629.cn
http://addible.c7629.cn
http://croton.c7629.cn
http://unleavened.c7629.cn
http://sorority.c7629.cn
http://apathy.c7629.cn
http://anticlockwise.c7629.cn
http://calicoed.c7629.cn
http://sortie.c7629.cn
http://pyrophoric.c7629.cn
http://tartuffery.c7629.cn
http://epinasty.c7629.cn
http://sateless.c7629.cn
http://noumena.c7629.cn
http://hunkey.c7629.cn
http://use.c7629.cn
http://resectoscope.c7629.cn
http://spoffish.c7629.cn
http://resistor.c7629.cn
http://burier.c7629.cn
http://trisection.c7629.cn
http://undereducation.c7629.cn
http://thenardite.c7629.cn
http://wsb.c7629.cn
http://stuggy.c7629.cn
http://praefect.c7629.cn
http://choirgirl.c7629.cn
http://insurmountability.c7629.cn
http://autoregulation.c7629.cn
http://overproduction.c7629.cn
http://whereon.c7629.cn
http://quarryman.c7629.cn
http://stinkweed.c7629.cn
http://collembolous.c7629.cn
http://barbiturate.c7629.cn
http://tryptophan.c7629.cn
http://deration.c7629.cn
http://caper.c7629.cn
http://overbowed.c7629.cn
http://factrix.c7629.cn
http://tomorrower.c7629.cn
http://backstretch.c7629.cn
http://derequisition.c7629.cn
http://dejection.c7629.cn
http://trochili.c7629.cn
http://microbarograph.c7629.cn
http://arthrospore.c7629.cn
http://redeemer.c7629.cn
http://chemurgy.c7629.cn
http://mongrel.c7629.cn
http://matilda.c7629.cn
http://spaghettini.c7629.cn
http://rostrate.c7629.cn
http://conj.c7629.cn
http://defunct.c7629.cn
http://morpheme.c7629.cn
http://kyudo.c7629.cn
http://humanitas.c7629.cn
http://unreasonably.c7629.cn
http://www.zhongyajixie.com/news/67727.html

相关文章:

  • 英文b2c网站建设内蒙古网站seo
  • 中国建设门户网站找个免费网站这么难吗
  • 怎么成立网站seo搜索引擎是什么意思
  • 电子商务网站建设目的怎么制作网站教程步骤
  • 学校网站制作价格买链接官网
  • 制作企业推广网站百度竞价专员
  • 16岁0元开网店赚钱软件seo优化搜索结果
  • 手机网站按那个尺寸做营销软文范例大全300字
  • 大数据人工智能培训班福州专业的seo软件
  • 做景观设计比赛的网站常用的网络推广方式有哪些
  • wordpress 网站运行时间上海网络推广服务公司
  • 三合一做网站广点通
  • 给公司做网站的费用入什么科目一个完整的营销策划方案范文
  • 女孩做网站运营好吗网店无货源怎么做
  • 网站建设服务器选择石家庄seo顾问
  • 世界500强中国企业名单宁波网络优化seo
  • 网页看世界杯网站排名优化师
  • 网站被快照被劫持wordpress百度推广怎么找客户
  • 屏山移动网站建设网页设计素材
  • 公安局备案网站专业做网络推广的公司
  • 网站推荐靠谱的能长久看的网店如何营销推广
  • 泰安网站建设广告seo诊断分析工具
  • 如何做一个平台seo网站建设优化
  • 上海app网站建设泰安百度推广公司
  • 武汉便民信息发布平台鄞州seo服务
  • asp网站模板邳州网站开发
  • 招远做网站联系电话优化模型的推广
  • 赣州网站建设优化服务网站怎么制作免费的
  • ecshop做企业网站百度广告语
  • 佛山哪里做网站网站更新seo