ko-time核心代码
核心逻辑就是对方法做切面,方法执行前后有start和end时间的计算,然后打印出end-start耗时
ko-time对性能有影响,并且为单体架构,只建议在开发环境使用,目前市场中常用的为skywalking,增对微服务架构
ko-time接口可参考官方文档,在这里不做说明
获取调用链路,接口方法函数数据库表耗时,在这里不做说明
关键注解如下:
是否登录注解
@Target({
ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Auth {
String value() default "";
}
计算时间注解,可在依赖此jar后使用注解来获取耗时
@Target({
ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface ComputeTime {
String value() default "chinese";
}
关键反射:
反射登录注解,判断是否登录
@Aspect
@Component
public class AuthHandler {
public static Logger log = Logger.getLogger(AuthHandler.class.toString());
@Pointcut(KoConstant.authRange)
public void preProcess() {
}
@Around("preProcess()")
public Object doAroundCompute(ProceedingJoinPoint pjp) throws Throwable {
Method method = ((MethodSignature) pjp.getSignature()).getMethod();
boolean needAuth = method.isAnnotationPresent(Auth.class);
if (needAuth&& Context.