使用aop切面編程進行日志處理
1.定義注解隆箩;
2.定義切點乘粒;
3.進入切面剧董;
4.進行日志處理赶熟;
代碼:
@Target({ElementType.PARAMETER,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface LogA {
?? //String dateStr();
? // String ids();
? // String returnStr();
}
@Slf4j
@Aspect
@Component
public class LogAopService {
?? /**
? ? * 添加切入點
? ? */
?? @Pointcut("@annotation(com.bh.aop.LogA)")
?? public void checkPreAuthorize() {
?? }
?? /**
? ? * 之前操作
? ? */
? /*? @Before("checkPreAuthorize()")
?? public void check(JoinPoint joinPoint) {
? ? ?? System.out.println("經(jīng)過之前驗證");
?? }
?? *//**
? ? * 之后操作
? ? *//*
?? @After("checkPreAuthorize()")
?? public void check2(JoinPoint joinPoint) {
? ? ?? System.out.println("經(jīng)過之后驗證");
?? }
*/
?? /**
? ? * 處理完請求后執(zhí)行
? ? */
?? @AfterReturning(pointcut = "@annotation(com.bh.aop.LogA)",returning = "returnV")
?? public void doAfterReturning(JoinPoint joinPoint,Object returnV) {
? ? ?? Object[] args = joinPoint.getArgs();
? ? ?? String s = JSONObject.toJSONString(args);
? ? ?? log.info("【LogAop】調(diào)用方法:{}领猾,請求參數(shù):{}米同,返回結(jié)果:{}",joinPoint.getSignature().getName(),s,returnV);
?? }
?? /**
? ? * 攔截異常操作
? ? */
?? @AfterThrowing(value = "@annotation(com.bh.aop.LogA)")
?? public void doAfterThrowing(JoinPoint joinPoint) {
? ? ?? System.out.println("處理發(fā)生異常時");
?? }
}
@LogA
@Override
public String postLetterResToTrs(JSONObject object){}