其他分享
首页 > 其他分享> > 统一记录日志(AOP的使用)

统一记录日志(AOP的使用)

作者:互联网

AOP的概念

即面向方面(切面)编程

AOP的术语

AOP的实现

AspectJ是语言级的实现,它扩展了Java语言,定义了AOP语法

AspectJ在编译期织入代码,它有一个专门的编译器,用来生成遵守Java字节码规范的class文件。

Spring AOP使用纯Java实现,它不需要专门的编译过程,也不需要特殊的类装载器。

Spring AOP在运行时通过代理的方式织入代码,只支持方法;类型的连接点。

Spring支持AspectJ的集成。

package com.nowcoder.community.aspect;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;

@Component
@Aspect
public class AlphaAspect {

    @Pointcut("execution(* com.nowcoder.community.service.*.*(..))")
    public void pointcut() {

    }

    @Before("pointcut()")
    public void before() {
        System.out.println("before");
    }

    @After("pointcut()")
    public void after() {
        System.out.println("after");
    }

    @AfterReturning("pointcut()")
    public void afterRetuning() {
        System.out.println("afterRetuning");
    }

    @AfterThrowing("pointcut()")
    public void afterThrowing() {
        System.out.println("afterThrowing");
    }

    @Around("pointcut()")
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("around before");
        Object obj = joinPoint.proceed();
        System.out.println("around after");
        return obj;
    }

}

标签:记录,System,pointcut,AOP,println,日志,public,out
来源: https://blog.csdn.net/m0_59860403/article/details/122793955