shikeying
2024-01-11 3b67e947e36133e2a40eb2737b15ea375e157ea0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.walker.cache;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
 
/**
 * 处理系统缓存提供者的后处理器实现。</p>
 * 该处理器主要用来实现在启动过程中加载应用定义的缓存bean对象,同时把这些缓存对象<br>
 * 注入到<code>CacheManager</code>中,已在后续运行中提供给应用使用。</p>
 * 搜索的缓存对象包括:
 * <pre>
 * 所有实现<code>CacheProvider</code>的对象。
 * 也包括<code>AbstractCacheTreeProvider</code>它也实现了缓存提供者接口。
 * </pre>
 * @author shikeying
 * @date 2014-8-16
 *
 */
public class CacheProviderPostProcessor implements BeanPostProcessor {
 
    private final transient Logger logger = LoggerFactory.getLogger(getClass());
    
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName)
            throws BeansException {
        if(CacheProvider.class.isAssignableFrom(bean.getClass())){
            if(SimpleCacheManager.addCacheProvider((CacheProvider<?>)bean)){
                logger.debug("成功注册缓存对象: " + beanName);
            }
        }
        return bean;
    }
 
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName)
            throws BeansException {
        return bean;
    }
 
}