spring mvc实现自定义注解

本文介绍了一种通过自定义注解@CheckSign并结合AOP编程的方式,在Java应用程序中实现对请求签名的有效验证方法。具体步骤包括创建注解、编写切面类,并在实际业务场景中应用。

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

实现方式:使用@Aspect实现:

1.

新建注解接口:CheckSign

package com.soeasy.web.utils;

import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;

import java.lang.annotation.*;

/**
 * Created by Administrator on 2017/10/25 0025.
 */
@Documented
@Target({ElementType.METHOD}) //方法上
@Inherited
@Retention(RetentionPolicy.RUNTIME) //运行时
@Order(Ordered.HIGHEST_PRECEDENCE) //最高优先级
public @interface CheckSign {
}

2.

新建注解实现 CheckSignAspect 类:

package com.soeasy.web.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.soeasy.commons.FailException;
import com.soeasy.utils.sign.Des3;
import com.soeasy.utils.sign.SignConf;
import org.apache.log4j.Logger;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 自定义注解@CheckSign的实现方法
 * Created by Administrator on 2017/10/25 0025.
 */
@Aspect
@Component
public class CheckSignAspect {
    private Logger log = Logger.getLogger(this.getClass());
    /**
     * 目标方法执行
     * @param pjp
     */
    @Around("@annotation(com.soeasy.web.utils.CheckSign)") //执行@接口
    public Object beforeExec(ProceedingJoinPoint pjp) throws Throwable {
        //获取request信息
        /*RequestAttributes ra = RequestContextHolder.getRequestAttributes();
        ServletRequestAttributes sra = (ServletRequestAttributes)ra;
        HttpServletRequest request = sra.getRequest();*/

        //获取post参数
        for (int i = 0; i < pjp.getArgs().length; i++) {
            if(pjp.getArgs()[i] instanceof LinkedHashMap || pjp.getArgs()[i] instanceof JSONObject){
                Map<String, Object> map = (Map<String,Object>) pjp.getArgs()[i];

            }
        }
        return pjp.proceed();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值