日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

优雅参数判空_java 方法参数怎么优雅校验?

發(fā)布時(shí)間:2025/4/16 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 优雅参数判空_java 方法参数怎么优雅校验? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

不邀自來。這個(gè)問題,我之前也考慮過,包括異常處理,都是很繁瑣的,不是核心的業(yè)務(wù)邏輯,但是充斥在代碼的各個(gè)角落,很繁瑣。

我的解決方案,是通過aop+注解的方式,無侵入式的解決。

1.第一步聲明自定義注解類

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.METHOD)

public @interface RequestRequire {

/**

* 請(qǐng)求當(dāng)前接口所需要的參數(shù),多個(gè)以小寫的逗號(hào)隔開

* @return

*/

public String require() default "";

/**

*傳遞參數(shù)的對(duì)象類型

*/

public Class> parameter() default Object.class;

}

2.對(duì)需要做非空判斷的方法做注解配置(我一般用在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類是一個(gè)參數(shù)類,里面包含了賬號(hào)模塊的所有參數(shù)。

3.編寫切面類

@Aspect

@Component

public class RequestRequireAspect {

Logger log=LoggerFactory.getLogger(RequestRequireAspect.class);

public RequestRequireAspect() {

log.info("初始化接口參數(shù)非空判斷切面類...");

}

@Pointcut("@annotation(com.xxxx.RequestRequire)")

public void controllerInteceptor() {

}

@Around("controllerInteceptor()")

public Object around(ProceedingJoinPoint pjp) throws Throwable {

//獲取注解的方法參數(shù)列表

Object[] args = pjp.getArgs();

//獲取被注解的方法

MethodInvocationProceedingJoinPoint mjp = (MethodInvocationProceedingJoinPoint) pjp;

MethodSignature signature = (MethodSignature) mjp.getSignature();

Method method = signature.getMethod();

//獲取方法上的注解

RequestRequire require = method.getAnnotation(RequestRequire.class);

//以防萬一,將中文的逗號(hào)替換成英文的逗號(hào)

String fieldNames=require.require().replace(",", ",");

//從參數(shù)列表中獲取參數(shù)對(duì)象

Object parameter=null;

for(Object pa:args){

//class相等表示是同一個(gè)對(duì)象

if (pa.getClass()==require.parameter() ) {

parameter=pa;

}

}

//通過反射去和指定的屬性值判斷是否非空

Class cl=parameter.getClass();

for(String fieldName:fieldNames.split(",")){

//根據(jù)屬性名獲取屬性對(duì)象

Field f=cl.getField(fieldName);

//設(shè)置可讀寫權(quán)限

f.setAccessible(true);

//獲取參數(shù)值,因?yàn)槲业膮?shù)都是String型所以直接強(qiáng)轉(zhuǎn)

String value=(String)f.get(parameter);

//非空判斷

if(!StringUtils.isNotBlank(value)){

throw RuntimeException("參數(shù):"+fieldName+"不允許為空");

}

}

//如果沒有報(bào)錯(cuò),放行

return pjp.proceed();

}

}

最后在springmvc里面配置

5.最后,你那個(gè)方法需要做非空判斷,你就愉快的加上注解吧,不想就把注解移除,非侵入式,可插拔,封裝好了,以后項(xiàng)目都可以直接拿來用。

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的优雅参数判空_java 方法参数怎么优雅校验?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 先锋av资源 | 国产毛片基地 | 美女网站在线看 | 成人手机在线观看 | 97久久国产 | 国产国产乱老熟女视频网站97 | 欧美透逼视频 | 亚洲人成色777777精品音频 | jizz内谢中国亚洲jizz | 欧美777| 国内精品久久99人妻无码 | 欧美黄色片免费看 | 成人欧美视频在线观看 | 极品女神无套呻吟啪啪 | 在线播放你懂的 | 一级黄色录象 | 免费一级特黄 | 在线天堂1| www.亚洲一区 | 熟女国产精品一区二区三 | 超碰在线免费公开 | 国产一二三级 | av激情在线 | 91秦先生在线播放 | 日韩一区二区三区四区五区六区 | 看片日韩 | 国产乱码精品一区二区三区精东 | 国产97免费视频 | 爱爱免费网站 | 波多野结衣先锋影音 | 国产精品-色哟哟 | 亚洲无限码 | 亚洲九区 | 亚洲综合激情 | 97在线观看免费视频 | 欧美aa视频 | 自拍偷拍18p | av最新在线| 91色漫 | 久热一区| 99热中文| 免费看女生裸体视频 | a级在线免费观看 | 欧美久久久久久久久久久 | 人人干av | 久久加勒比 | 国产在线播放一区二区 | 天天添天天操 | 久av在线| av一二三四区| 日本不卡二区 | 亚洲一二三 | 91精品人妻互换一区二区 | 亚洲av色区一区二区三区 | 国产嫩bbwbbw高潮 | 特级西西444www大精品视频 | 欧美巨大荫蒂茸毛毛人妖 | 丰满熟妇被猛烈进入高清片 | 午夜色网站 | 自拍偷拍欧美视频 | www中文字幕| 蜜臀久久精品久久久久 | 97超碰导航 | 亚洲精品久久久蜜桃 | 亚洲电影一区二区 | 精品毛片 | 色婷婷av在线 | 中文在线中文资源 | www.色日本 | 亚洲久久影院 | 99re这里只有精品在线观看 | 尤物视频在线免费观看 | 99久久精品一区二区成人 | 男人插入女人下面的视频 | 国产中文| 亚洲少妇毛片 | 91免费播放 | 亚洲精品区 | 九九热播视频 | 欧美一级不卡 | 亚洲欧洲国产视频 | 88av视频 | 极品久久 | 亚洲欧洲综合 | 少妇熟女一区二区三区 | 国产毛片一区二区三区va在线 | 亚洲少妇毛片 | 亚洲毛片在线播放 | 1000部啪啪未满十八勿入超污 | 波多野结衣在线观看视频 | 中文字幕无码毛片免费看 | 国产无套内射普通话对白 | 欧美色射 | xxx精品| xxx日本黄色 | 国产精品自拍网站 | 国产午夜精品久久久久 | 制服丝袜av在线播放 | 超碰在线91 |