首页 > 其他分享 >自定义注解实现AOP

自定义注解实现AOP

时间:2023-10-06 12:57:53浏览次数:40  
标签:lang log 自定义 org AOP import 注解 aspectj

自定义注解AOP

package com.log;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;

import java.lang.reflect.Method;

/**
 * @author Tobieance
 * @description 日志注解切面类
 * @date 2023-09-07 16:46
 */
@Component
@Aspect
public class LogAspect {

    @Pointcut("@annotation(com.log.MyLog)")//注解
    public void pointcut() {
    }

    @Before("pointcut()")
    public void log(JoinPoint joinPoint) throws NoSuchMethodException {
        //获取目标对象
        Object target = joinPoint.getTarget();
        //获取目标对象方法
        MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
        Method method = target.getClass().getMethod(
                methodSignature.getName(),
                methodSignature.getParameterTypes());
        //获取注解对象实例
        MyLog log = method.getAnnotation(MyLog.class);

        String type = log.type();
        String desc = log.desc();

        System.out.println("日志类型:" + type + "\t\t调用方法" + method.getName() + "\t日志描述" + desc);
    }
}
package com.log;


import java.lang.annotation.*;

/**
 * @author Tobieance
 * @description MyLog注解
 * @date 2023-09-07 16:36
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MyLog {
    String type();//日志类型
    String desc();//日志描述
}

标签:lang,log,自定义,org,AOP,import,注解,aspectj
From: https://www.cnblogs.com/tobieance/p/17744448.html

相关文章

  • 自定义表单设计之六-行字段计算配置
    AddFormRowCal.aspx<htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title>行字段规则</title><scriptlanguage="javascript">functionsaveRole(){rowcalfrm......
  • spring注解开发---beans注入
    万能xml开头:<!--导入p,c命名空间context注解--><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"......
  • Solidworks 文件属性、自定义属性傻傻分不清?究竟是“李逵”还是“李鬼”?
    在此记录学习Solidworks的历程一步一个脚印,道阻且长,慢慢走吧问题:为什么同一零件中两个位置的自定义属性不一样?究竟是“李逵”还是“李鬼”?举例:通过“程序-属性选项卡编辑器20XX”修改零部件的属性后,新建一个零部件,分别打开“文件-属性”与“任务窗口-零部件属性”,会发现两个......
  • uni自定义onBackPress事件
    onBackPress函数return非true以外的值都会执行默认的返回行为,只有returntrue才不会执行返回事件,所以在执行自定义事件时一定要返回truedata(){return{isConfirm:false,//处理返回逻辑};},methods:{onBackPress()......
  • 如何开启基于注解的自动装配?
    要使用 @Autowired,需要注册 AutowiredAnnotationBeanPostProcessor,可以有以下两种方式来实现:引入配置文件中的<bean>下引入 <context:annotation-config><beans><context:annotation-config/></beans>在bean配置文件中直接引入AutowiredAnnotationBeanPostProcesso......
  • 自定义异常类
    继承runtimeexception可以不处理异常:packagecom.example.emos.wx.exception;importlombok.Data;@DatapublicclassEmosExceptionextendsRuntimeException{privateStringmsg;privateintcode=500;publicEmosException(Stringmsg){super......
  • c# winfom从0学习开发开发OA、BPM工作流程与自定义表单系统(二)部门树形结构和下拉框的
    c#winfom从0学习开发开发OA、BPM工作流程与自定义表单系统(二)部门树形结构和下拉框的结构设计 具体的代码usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem......
  • CSS 实现 table 表头固定 tbody 显示垂直滚动条并自定义滚动条样式
    一、最终效果图 二、关键代码html代码:<divclass="table_info"><tableborder="0"cellspacing="0"cellpadding="0"style="width:100%;"><thead><tr><th>项目账号</th&g......
  • 1.3Spring对AOP的支持
     并不是所有的AOP框架都是相同的,它们在连接点模型上可能有强弱之分。有些允许在字段修饰符级别应用通知,而另一些只支持与方法调用相关的连接点。它们织入切面的方式和时机也有所不同。但是无论如何,创建切点来定义切面所织入的连接点是AOP框架的基本功能。  因为这是一本......
  • SpringMVC使用@Valid注解实现数据验证
    一、@Valid注解的作用@Valid注解是javax.validation包中的一个注解,它可以用来标注需要验证的数据对象。当一个带有@Valid注解的对象传递给SpringMVC的控制器方法时,SpringMVC会自动调用验证器来验证这个对象。二、数据验证的流程SpringMVC中的数据验证流程如下:......