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();
}