栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java方法参数进行核对的方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java方法参数进行核对的方法

我们知道java中的方法一直是为大家常用的,对于一些参数的设置,想必因为使用大家也有接触到,只是我们完成参数的修改好,在正否与否的判断上似乎不被大家所知道。本篇为大家推荐aop+注解的方法,分为五个步骤进行核对,在操作上代码的形式展现给大家,一起来看具体的流程。

通过aop+注解的方式,无侵入式的解决。

1.声明自定义注解类

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface RequestRequire {
    
    
    public String require() default "";
    
    
    public Class parameter() default Object.class;
}

2.对需要做非空判断的方法做注解配置(一般用在controller)

@RequestMapping(value = "/register", method = RequestMethod.POST)
@RequestRequire(require="mobile,sessionToken",parameter=AccountRequestParameter.class)
public void register(HttpServletRequest request,
            HttpServletResponse response,HttpRequestParameter parameter)throws Exception{
        //核心代码
}

AccountRequestParameter类是一个参数类,里面包含了账号模块的所有参数。

3.编写切面类

@Aspect
@Component
public class RequestRequireAspect {
 
    Logger log=LoggerFactory.getLogger(RequestRequireAspect.class);
    
 
    public RequestRequireAspect() {
        log.info("初始化接口参数非空判断切面类...");
    }
    
    @Pointcut("@annotation(com.xxxx.RequestRequire)")
    public void controllerInteceptor() {
    }
 
    @Around("controllerInteceptor()")
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        
        //获取注解的方法参数列表
        Object[] args = pjp.getArgs();
        
        //获取被注解的方法
        MethodInvocationProceedingJoinPoint mjp = (MethodInvocationProceedingJoinPoint) pjp;
        MethodSignature signature = (MethodSignature) mjp.getSignature();
        Method method = signature.getMethod();
        
        //获取方法上的注解
        RequestRequire require = method.getAnnotation(RequestRequire.class);
        
        //以防万一,将中文的逗号替换成英文的逗号
        String fieldNames=require.require().replace(",", ",");
        
        //从参数列表中获取参数对象
        Object parameter=null;
        for(Object pa:args){
            //class相等表示是同一个对象
            if (pa.getClass()==require.parameter() ) {
                parameter=pa;
            }
        }
        
        //通过反射去和指定的属性值判断是否非空
        Class cl=parameter.getClass();
        for(String fieldName:fieldNames.split(",")){
            
            //根据属性名获取属性对象
            Field f=cl.getField(fieldName);
            
            //设置可读写权限
            f.setAccessible(true);
            
            //获取参数值,因为我的参数都是String型所以直接强转
            String value=(String)f.get(parameter);
            
            //非空判断
            if(!StringUtils.isNotBlank(value)){
                throw RuntimeException("参数:"+fieldName+"不允许为空");
            }
        }
        
        //如果没有报错,放行
        return pjp.proceed();
    }
}

4.在springmvc里面配置

5.最后,方法需要做非空判断,加上注解。不想就把注解移除,非侵入式,可插拔,封装好了,以后项目都可以直接拿来用。

以上就是java方法参数进行核对的方法,当下次有参数核对需求的时候,相信大家也不至于不会具体的操作了。看完文章后,就可以跟着上方的方面练习一遍具体操作了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/15066.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号