更新時(shí)間:2021-11-16 10:50:04 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1175次
Shiro 開(kāi)發(fā)團(tuán)隊(duì)明白性能在許多應(yīng)用程序中至關(guān)重要。緩存是從一開(kāi)始就內(nèi)置到 Shiro 中的一流功能,以確保安全操作盡可能快。
然而,雖然緩存作為一個(gè)概念是 Shiro 的基本部分,但實(shí)現(xiàn)完整的緩存機(jī)制將超出安全框架的核心能力。為此,Shiro 的緩存支持基本上是一個(gè)抽象(包裝器)API,它將“位于”底層生產(chǎn)緩存機(jī)制(例如 Hazelcast、Ehcache、OSCache、Terracotta、Coherence、GigaSpaces、JBossCache 等)之上。這允許 Shiro 最終用戶配置他們喜歡的任何緩存機(jī)制。
Shiro 有三個(gè)重要的緩存接口:
CacheManager- 所有緩存的主要管理器組件,它返回Cache實(shí)例。
Cache - 維護(hù)鍵/值對(duì)
CacheManagerAware - 由希望接收和使用 CacheManager 實(shí)例的組件實(shí)現(xiàn)
ACacheManager返回Cache實(shí)例和各種 Shiro 組件Cache根據(jù)需要使用這些實(shí)例來(lái)緩存數(shù)據(jù)。任何實(shí)現(xiàn)的Shiro組件CacheManagerAware都會(huì)自動(dòng)接收一個(gè)配置的CacheManager,它可以用來(lái)獲取Cache實(shí)例。
Shiro SecurityManager實(shí)現(xiàn)和 allAuthenticatingRealm和AuthorizingRealmimplementations 實(shí)現(xiàn)了 CacheManagerAware。如果您在CacheManager上設(shè)置SecurityManager,它將依次在實(shí)現(xiàn) CacheManagerAware 的各種領(lǐng)域(OO 委托)上設(shè)置它。例如,在 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 提供了許多開(kāi)箱CacheManager即用的實(shí)現(xiàn),您可能會(huì)發(fā)現(xiàn)它們很有用,而不是實(shí)現(xiàn)您自己的。
這MemoryConstrainedCacheManager是一種CacheManager適用于單 JVM 生產(chǎn)環(huán)境的實(shí)現(xiàn)。它不是集群/分布式的,因此如果您的應(yīng)用程序跨越多個(gè) JVM(例如,在多個(gè) Web 服務(wù)器上運(yùn)行的 Web 應(yīng)用程序),并且您希望緩存條目可以跨 JVM 訪問(wèn),您將需要使用分布式緩存實(shí)現(xiàn)。
該MemoryConstrainedCacheManager管理MapCache的情況下,一個(gè)MapCache每個(gè)命名緩存實(shí)例。每個(gè)MapCache實(shí)例都由 Shiro 支持,ShiroSoftHashMap可以根據(jù)應(yīng)用程序的運(yùn)行時(shí)內(nèi)存限制/需求(通過(guò)利用 JDKSoftReference實(shí)例)自動(dòng)調(diào)整自身大小。
因?yàn)樗麺emoryConstrainedCacheManager可以根據(jù)應(yīng)用程序的內(nèi)存配置文件自動(dòng)調(diào)整自身大小,所以在單 JVM 生產(chǎn)應(yīng)用程序以及測(cè)試需求中使用它是安全的。但是,它沒(méi)有更高級(jí)的功能,例如緩存條目 Time-to-Live 或 Time-to-Expire 設(shè)置。對(duì)于這些更高級(jí)的緩存管理功能,您可能希望使用CacheManager以下更高級(jí)的產(chǎn)品之一。
MemoryConstrainedCacheManager shiro.ini 配置示例
...
cacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
...
securityManager.cacheManager = $cacheManager
以上就是關(guān)于“Shiro緩存管理器的實(shí)現(xiàn)”的介紹,如果大家想了解更多相關(guān)知識(shí),可以關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java在線學(xué)習(xí),里面的課程內(nèi)容詳細(xì),由淺到深,通俗易懂,適合小白學(xué)習(xí),希望對(duì)大家能夠有所幫助。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)