aop实现(自定义注解)

211 阅读1分钟

aop实现(自定义注解)

直接上代码


import com.slgs.bos.common.annotation.DeleteAnnotation;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import java.util.List;
// 切面类
@Aspect
@Component
public class DeleteAspect {

    Logger log = LoggerFactory.getLogger(DeleteAspect.class);

    @Pointcut(value = "@annotation(com.slgs.bos.common.annotation.DeleteAnnotation)")
    public void pointCut() {
    }

    @AfterReturning(value = "pointCut() && @annotation(deleteAnnotation)", returning = "result")
    public void after( JoinPoint point, Object result,DeleteAnnotation deleteAnnotation) {

        String value = deleteAnnotation.value();
        Object[] args = point.getArgs();
        List<String> IdList = (List<String>) args[0];
        StringBuilder ids = new StringBuilder();
        for (String id : IdList) {
            ids.append(id).append(",");
        }
        if ((int)result > 0){
            log.warn(value + "删除" + ids.toString() +"成功");
        }else {
            log.warn(value + "删除" + ids.toString() +"失败");
        }
    }
}

自定义的注解

import java.lang.annotation.*;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DeleteAnnotation {
    String value();
}