我尝试更新到EhCache 3,但注意到我的AclConfig for spring-security-acl不再工作。原因是EhCacheBasedAclCache
仍然使用import net.sf.ehcache.Ehcache
。EhCache从版本3开始移动到org.ehcache
,因此不再工作。spring是否为EhCache 3提供了一个替代类,或者我需要实现自己的Acl Cache?这是代码,它不再工作:
@Bean
public EhCacheBasedAclCache aclCache() {
return new EhCacheBasedAclCache(aclEhCacheFactoryBean().getObject(),
permissionGrantingStrategy(), aclAuthorizationStrategy());
}
1条答案
按热度按时间qq24tv8q1#
我给你的问题加上了赏金,因为我也在寻找一个更权威的答案。
这里有一个可行的解决方案,但还有更好的方法&可以专门针对acl调整缓存设置。
1)
JdbcMutableAclService
接受任何AclCache
实现,而不仅仅是EhCacheBasedAclCache
。立即可用的实现是SpringCacheBasedAclCache
。你也可以实现自己的。2)使用Spring Cache作为抽象在项目中启用ehcache 3。在Sping Boot 中,这就像使用
@EnableCache
注解一样简单。然后在bean配置类中添加@Autowired CacheManager cacheManager
。3)使用aclCache条目更新ehcache3.xml
Serializable
,因为Spring acl插入了以Long和ObjectIdentity为关键的缓存条目:)*4)将
EhCacheBasedAclCache
bean替换为SpringCacheBasedAclCache
,如下所示:5)在
JdbcMutableAclService
构造函数中使用aclCache()