cache(一)——EhCacheManagerFactoryBean

使用EhCache首先需要配置缓存信息ehcatch.xml,然后需要Spring配置,将EhCache与SpringBoot整合在一起,这其中就要装配两个重要的bean[EhCacheManagerFactoryBean]和[EhCacheManager]

  • 首先从EhCacheManagerFactoryBean来讲:这个类就是Spring用来创建 CacheManager实例的,CacheManager负责管理一个或多个Cache对象。(afterPropertiesSet方法来返回一个CacheManager实例对象)

EhCacheManagerFactoryBean封装的数据:

acceptExisting设置是否为此EhCacheManagerFactoryBean设置接受现有的同名EhCache CacheManager。默认为“false”。与shared组合使用 ,"acceptExisting"和"acceptExisting"如果两者都设置,则acceptExisting将被覆盖,因为shared表示“更强”的共享模式。

其中有三个重要的属性:

 /**econfigLocation配置信息*/
    @Nullable
    private Resource configLocation;
    /**通过shared来设置cache的基地是这里的Spring独用,还是跟别的(如hibernate的Ehcache共享)
     * whether the EHCache CacheManager should be shared (as a singleton at the VM level)
     * or independent (typically local within the application)*/
    private boolean shared = false;
    /**通过EhCacheManagerFactoryBean来创建CacheManager实例*/
    @Nullable
    private CacheManager cacheManager;

可以看到,在afterPropertiesSet()中这样一段代码:据shared与否的设置,Spring分别通过CacheManager.create()或new CacheManager()方式来创建一个ehcache基地.。

if (this.shared) {
            this.cacheManager = CacheManager.create(configuration);
        } else if (this.acceptExisting) {
            Class var2 = CacheManager.class;
            synchronized(CacheManager.class) {
                this.cacheManager = CacheManager.getCacheManager(this.cacheManagerName);
                if (this.cacheManager == null) {
                    this.cacheManager = new CacheManager(configuration);
                } else {
                    this.locallyManaged = false;
                }
            }
        } else {
            this.cacheManager = new CacheManager(configuration);
        }

至此,EhCacheManagerFactoryBean的任务就完成了。在afterPropertiesSet()方法中,是通过调用CacheManager 类提供的static创建方法来获得 CacheManager 对象。

关于afterPropertiesSet()的执行顺序可参考链接afterPropertiesSet方法什么时候执行Spring中的InitializingBean接口的使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值