来了解一下---JSR107缓存规范(Java 规范提案)

前言

这个还是有需要了解的,记得有次面试官问到redis的时候,突然问你了解过缓存规范吗?
我懵了,这是啥?我还以为有是使用redis的管理工具,就跟她扯了Jedis和redisTemplate的内容,然后我他说我想要了解的不是这个,它说道我想要了解的是JSR管理规范,但是那时候我根本不知道这个是什么,只能说有空会在去了解的。

不过说实在这个东西也只要了解一下就行了

核心内容

Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry

  • CachingProvider定义了创建、配置、获取、管理和控制多个CacheManager。一个应用可以在运行期访问多个CachingProvider。

  • CacheManager定义了创建、配置、获取、管理和控制多个唯一命名的Cache,这些Cache存在于CacheManager的上下文中。一个CacheManager仅被一个CachingProvider所拥有。

  • Cache是一个类似Map的数据结构并临时存储以Key为索引的值。一个Cache仅被一个CacheManager所拥有。

  • Entry是一个存储在Cache中的key-value对。

  • Expiry 每一个存储在Cache中的条目有一个定义的有效期。一旦超过这个时间,条目为过期的状态。一旦过期,条目将不可访问、更新和删除。缓存有效期可以通过ExpiryPolicy设置

在这里插入图片描述

依赖

使用JSR107可以添加下面的包

<dependency>
    <groupId>javax.cache</groupId>
    <artifactId>cache-api</artifactId>
</dependency>

几个重要的缓存概念和注解

名称解释
Cache缓存接口,定义缓存操作。实现有:RedisCache、EhCacheCache、ConcurrentMapCache等
CacheManager缓存管理器,管理各种缓存(Cache)组件
@Cacheable主要针对方法配置,能够根据方法的请求参数对其结果进行缓存
@CacheEvict清空缓存
@CachePut保证方法被调用,又希望结果被缓存(缓存更新)
@EnableCaching开启基于注解的缓存
keyGenerator缓存数据时key生成策略
serialize序列化

后记

一般不直接使用JSR-107开发,因为JSR-107仅仅定义了接口,而没有实现,直接通过JSR开发非常麻烦,
现在spring官方根据缓存规则,它出了一个自己的缓存抽象,他的实现模式就是JSR-107

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "b'jackson-datatype-jsr310'" 是一个Java库的名称,它是用于处理日期时间格式的 Jackson 库的一个扩展。这个库可以让开发者更容易地在 Java 应用程序中使用与ISO-8601标准相兼容的日期和时间格式。 ### 回答2: Jackson-datatype-jsr310是指Jackson的扩展库,用于支持Java 8新的日期和时间API(JSR-310)与Java对象之间的序列化和反序列化。JSR-310是Java 8发布的一项新的标准,它提供了一组强类型的日期和时间API,解决了Java标准库中日期处理的不足和问题。 在Java中,日期和时间相关的类在处理时常常出现各种问题。Java标准库的日期和时间类大多是基于旧的Calendar和Date类而来,设计较为复杂,使用不够友好,特别是在进行格式化和解析时,容易出现错误。JSR-310重新定义了新的日期和时间API,提供了更多更好用的方法和类,比旧的日期和时间API更加强大和易用。 使用Jackson-datatype-jsr310,我们可以将Java对象中的日期和时间类型数据序列化到JSON或其他数据格式中,并在反序列化时还原成对应的Java对象。这样就可以方便地在Java和其他语言之间进行数据的交换了。Jackson-datatype-jsr310支持Java 8 API中的LocalDate,LocalDateTime,ZonedDateTime等类型。 例如,在将Java对象转换为JSON字符串的过程中,我们可以使用ObjectMapper的registerModule方法,注册一个JavaTimeModule,它便会将Java 8日期和时间类自动序列化成JSON字符串。反序列化时,我们同样可以使用registerModule方法注册JavaTimeModule,并在将JSON字符串转化成Java对象时,自动将日期和时间类型还原成对应的Java对象。 总而言之,Jackson-datatype-jsr310是一个非常实用的工具,它可以使得Java程序更加简洁和易维护,尤其是在处理日期和时间相关的操作时,更加高效和准确。 ### 回答3: Jackson-datatype-jsr310是一个Java库,用于将Java 8中的JSR310日期和时间API(也称为Java时间API)与Jackson JSON处理库集成。这个库的主要目的是提供一种简单的方法将Java时间对象序列化和反序列化为JSON格式。 Java时间API是Java 8中引入的新的日期和时间功能,用于替代旧的Date和Calendar类。Java时间API使用不同的类表示日期,时间和时间段,并提供了一系列强大的方法来进行日期计算和格式化。 Jackson是一个用于处理JSON数据的流行Java库。Jackson提供了强大和高效的序列化和反序列化JSON的功能,由于其高性能和灵活性,成为Java编程中常用的JSON库。 Jackson-datatype-jsr310将Java时间API与Jackson集成的过程变得非常容易。使用这个库,您可以轻松地在Java对象和JSON之间转换日期,时间和时间段。这个库扩展了Jackson的ObjectMapper类,为JSR310类提供了序列化和反序列化的支持。 除了简化Java时间API和Jackson之间的集成之外,Jackson-datatype-jsr310还提供了许多其他功能,例如格式化日期和时间的方式完全可以按照自己的意愿来进行自定义配置。 总体来说,Jackson-datatype-jsr310是一个非常有用的Java库,使得Java时间API和Jackson的集成变得非常容易。它提供了灵活、高效、可靠的JSON序列化和反序列化,为Java程序员提供了一种简单而强大的方法来处理日期、时间和时间段的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值