自定义注解 输出方法上的参数 和 返回值

本文介绍了如何在Java中定义一个名为`ParamLog`的自定义注解,用于记录方法参数和返回值。注解的目标元素类型包括方法和类,保留策略为运行时,便于AOP切面处理。`ParamLogUtil`类作为切面处理,通过`@Pointcut`定义注解匹配的切入点,并在`@Around`通知中获取并打印方法参数及返回值信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义自定义注解

/**

 * 参数日志

 * 输出方法上的参数

 * 输出返回对象

 */

@Target({ ElementType.METHOD, ElementType.TYPE })

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface ParamLog {

}

 

 

/**

 * 参数日志

 * 输出方法上的参数

 * 输出返回对象

 */

@Component

@Aspect

public class ParamLogUtil {

 

    private static final Logger logger  = LoggerFactory.getLogger(ParamLogUtil.class);

 

    public ParamLogUtil() {

        logger.info("加载aop模块");

    }

 

   

@Pointcut("@annotation(com.xxx.util.annotationlog.ParamLog)")

    public void methodCachePointcut() {

    }

 

    @Around("methodCachePointcut()")

    public Object around(ProceedingJoinPoint point) throws Throwable {

       

         Object[] args = point.getArgs();

         for (Object object : args) {

            logInfo(object,0);

         }

         

       

        Object object;

        try {

           object = point.proceed();

        } catch (Exception e) {

           throw e;

        }

       

       

        logInfo(object,1);

       

        return object;

    }

 

    public void logInfo(Object object, Integer i) {

        String logType = "";

        if(i == 0) {

           logType = "输入参数:";

        }else {

           logType = "输出参数:";

        }

        if(object == null) {

            logger.info(logType+"null");

         }else {

            logger.info(logType+object.toString());

         }

    }

}

 

使用自定义注解

@Override

@ParamLog

public void createXXX(XXX xxx) {

        Session session = null;

        try {

           session = getSession();

           Transaction tran = session.beginTransaction();

            session.save(xxx);

           tran.commit();

        } catch (Exception e) {

           e.printStackTrace();

        } finally {

           if (session != null) {

               session.close();

           }

        }  

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值