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