您好,登錄后才能下訂單哦!
本篇文章為大家展示了怎么在java中對方法參數進行核對,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
Java是一門面向對象編程語言,可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序。
1.聲明自定義注解類
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface RequestRequire { /** * 請求當前接口所需要的參數,多個以小寫的逗號隔開 * @return */ 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里面配置
<aop:aspectj-autoproxy proxy-target-class="true"/>
上述內容就是怎么在java中對方法參數進行核對,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。