🔅AOP日志实现
🍭自定义日志注解类
package fun.quan.aop.comment;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* RetentionPolicy.RUNTIME 注释将由编译器记录在类文件中,并在运行时由VM保留,因此可以反射性地读取它们。
* RetentionPolicy.RUNTIME 正式的参数声明
* ElementType.METHOD 方法声明
* @author XIaoQ
*/
@Target({ElementType.PARAMETER,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {
/**
* 记录日志的名称
* @return
*/
String defaults() default "";
}
🍭创建切面类
package fun.quan.compents;
import fun.quan.pojo.User;
import fun.quan.pojo.UserLogs;
import fun.quan.service.LogService;
import fun.quan.utils.SpringUtils;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.NamedThreadLocal;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
i