com.neko233.skilltree.aop.api.AopApi Maven / Gradle / Ivy
package com.neko233.skilltree.aop.api;
import java.lang.reflect.Method;
/**
* {@link AopApi} recommend just a functional class, just action, no state, and singleton.
* 建议只有行为, 无状态, 且 singleton
*
* @author SolarisNeko on 2023-02-16
**/
public interface AopApi {
// --------------- global 全剧相关 --------------
/**
* 初始化
*/
default void init() {
}
/**
* 构造完成
*/
default void finish() {
}
// --------------- method invoke --------------
/**
* 前处理
*
* @param method 方法
* @param target 调用对象
* @param args 参数
*/
void preHandle(Method method,
Object target,
Object[] args);
default int retryCountOnError() {
return 0;
}
/**
* 当某些异常时, 自动重试
*
* @param e 发生的异常
*/
boolean tryEatException(Exception e);
/**
* 后处理
*
* @param method 方法
* @param target 调用对象
* @param args 参数
*/
void postHandle(Method method,
Object target,
Object[] args);
}