1

Spring Security ACL を使用しており、キャッシュを定義する必要があります。これまで私はこれを使用していました:

@Bean(name = { "defaultAclCache", "aclCache" })
protected AclCache defaultAclCache() {
    return new SpringCacheBasedAclCache(defaultAclJCacheFactory(), defaultPermissionGrantingStrategy(), defaultAclAuthorizationStrategy());
}

そしてそれはすべてうまくいきました。ただし、使用に切り替えて、と互換性のないインスタンスを返すようにjcacheなりました:defaultAclJCacheFactory()javax.cache.CacheSpringCacheBasedAclCache

@Bean(name = { "defaultAclJCacheFactory", "aclJCacheFactory" })
protected Cache defaultAclJCacheFactory() {
    return cacheManager.getCache("acl_cache");
}

JCacheの実装を検索しようとしましたorg.springframework.security.acls.model.AclCacheが、Spring Cache 用と EhCache 用に 1 つしかありません。に導入する予定はありますjcacheか?

4

1 に答える 1

4

JCacheCacheManager実装を使用してインスタンスを取得できるはずですorg.springframework.cache.Cache。たとえば、次のようになります。

@Bean(name = { "defaultAclCache", "aclCache" })
protected AclCache defaultAclCache(org.springframework.cache.CacheManager springCacheManager) {
    org.springframework.cache.Cache cache = 
        springCacheManager.getCache("acl_cache");
    return new SpringCacheBasedAclCache(cache, 
        defaultPermissionGrantingStrategy(), 
        defaultAclAuthorizationStrategy());
}

// Depending on your configuration, you may not even need this
@Bean
public JCacheCacheManager springCacheManager(javax.cache.CacheManager cacheManager) {
    return new JCacheCacheManager(cacheManager);
}
于 2014-06-11T13:39:00.230 に答える