package com.elab.redis.interceptor;

import org.springframework.aop.framework.ReflectiveMethodInvocation;

import java.lang.reflect.Method;

/**
 * 定义缓存处理的业务规则
 *
 * @author : liukx
 * @date : 2020/7/10 - 10:50
 */
public interface ICacheProcessService {
    /**
     * 是否关注指定方法
     *
     * @param method
     * @return
     */
    public boolean subscribe(Method method);

    /**
     * 关注之后，处理的业务逻辑
     *
     * @param invocation
     * @return
     * @throws Throwable
     */
    public Object invokeWithinTransaction(ReflectiveMethodInvocation invocation) throws Throwable;

//    @FunctionalInterface
//    interface InvocationCallback {
//        /**
//         * 具体业务最终执行的方法
//         *
//         * @return
//         * @throws Throwable
//         */
//        Object proceedWithInvocation() throws Throwable;
//
//    }
}
