Java培训机构logo图

首页 课程 师资 教程 报名

Shiro缓存管理器的实现

  • 2021-11-16 10:50:04
  • 131次 动力节点

缓存

Shiro 开发团队明白性能在许多应用程序中至关重要。缓存是从一开始就内置到 Shiro 中的一流功能,以确保安全操作尽可能快。

然而,虽然缓存作为一个概念是 Shiro 的基本部分,但实现完整的缓存机制将超出安全框架的核心能力。为此,Shiro 的缓存支持基本上是一个抽象(包装器)API,它将“位于”底层生产缓存机制(例如 Hazelcast、Ehcache、OSCache、Terracotta、Coherence、GigaSpaces、JBossCache 等)之上。这允许 Shiro 最终用户配置他们喜欢的任何缓存机制。

缓存API

Shiro 有三个重要的缓存接口:

CacheManager- 所有缓存的主要管理器组件,它返回Cache实例。

Cache - 维护键/值对

CacheManagerAware - 由希望接收和使用 CacheManager 实例的组件实现

ACacheManager返回Cache实例和各种 Shiro 组件Cache根据需要使用这些实例来缓存数据。任何实现的Shiro组件CacheManagerAware都会自动接收一个配置的CacheManager,它可以用来获取Cache实例。

Shiro SecurityManager实现和 allAuthenticatingRealm和AuthorizingRealmimplementations 实现了 CacheManagerAware。如果您在CacheManager上设置SecurityManager,它将依次在实现 CacheManagerAware 的各种领域(OO 委托)上设置它。例如,在 shiro.ini 中:

shiro.ini CacheManager 配置示例

securityManager.realms = $myRealm1, $myRealm2, ..., $myRealmN
...
cacheManager = my.implementation.of.CacheManager
...
securityManager.cacheManager = $cacheManager
# at this point, the securityManager and all CacheManagerAware
# realms have been set with the cacheManager instance

缓存管理器实现

Shiro 提供了许多开箱CacheManager即用的实现,您可能会发现它们很有用,而不是实现您自己的。

内存受限缓存管理器

这MemoryConstrainedCacheManager是一种CacheManager适用于单 JVM 生产环境的实现。它不是集群/分布式的,因此如果您的应用程序跨越多个 JVM(例如,在多个 Web 服务器上运行的 Web 应用程序),并且您希望缓存条目可以跨 JVM 访问,您将需要使用分布式缓存实现。

该MemoryConstrainedCacheManager管理MapCache的情况下,一个MapCache每个命名缓存实例。每个MapCache实例都由 Shiro 支持,ShiroSoftHashMap可以根据应用程序的运行时内存限制/需求(通过利用 JDKSoftReference实例)自动调整自身大小。

因为它MemoryConstrainedCacheManager可以根据应用程序的内存配置文件自动调整自身大小,所以在单 JVM 生产应用程序以及测试需求中使用它是安全的。但是,它没有更高级的功能,例如缓存条目 Time-to-Live 或 Time-to-Expire 设置。对于这些更高级的缓存管理功能,您可能希望使用CacheManager以下更高级的产品之一。

MemoryConstrainedCacheManager shiro.ini 配置示例

...
cacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
...
securityManager.cacheManager = $cacheManager

以上就是关于“Shiro缓存管理器的实现”的介绍,如果大家想了解更多相关知识,可以关注一下动力节点的Java在线学习,里面的课程内容详细,由浅到深,通俗易懂,适合小白学习,希望对大家能够有所帮助。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交