1.实现接口BeanPostProcessor
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import com.baidu.bainuo.weblab.api.impl.AbstractEvalEngine;
/**
* 启动时,spring加载 bean 并刷新 cache从 redis 中
* @author gaoming03
*/
public class CacheBeanPostProcessor implements BeanPostProcessor {
protected final Logger log = LoggerFactory.getLogger(getClass());
@Override //类实例化之前
public Object postProcessAfterInitialization(Object obj, String arg1) throws BeansException {
try { //当实例化 AbstractEvalEngine后,执行.
if (obj instanceof AbstractEvalEngine) {
String flushResult= ((AbstractEvalEngine) obj).flushAll("0");// 加载完整 redis 配置到 cache
log.info("cache flushAll result-->{}", flushResult);
}
} catch (Exception e) {
log.error("ex={}", e);
}
return obj;
}
@Override //类实例化之后
public Object postProcessBeforeInitialization(Object arg0, String arg1) throws BeansException {
return arg0;
}
}
2.配置 bean
<!-- 初始化 bean,完全 cache 同步 -->
<bean id="cacheBeanPostProcessor" class="com.baidu.bainuo.weblab.api.cache.CacheBeanPostProcessor" />
这样就行了