SpringMVC는 매개 변수 내보내기 및 매개 변수에 대한 매우 친숙한 확장 지원을 가지고있어 데이터 입력 및 출력에 대한 더 큰 실행 권한을 갖도록합니다. SpringMVC에 의해 정의 된 결과를 통해 일련의 처리를 어떻게 수행 할 수 있습니까?
인삼을 입력하십시오
requestBodyAdvice : @requestBody를 사용하여 모든 매개 변수를 처리합니다
참조 사례 : jsonViewRequestBodyAdvice
공개 클래스 jsonViewRequestBodyAdvice를 확장 requestBodyAdViceAdapter { /*** 여기에 사전 상호 호흡 및 일치 작업이 있습니다. 실제로, 진실을 만족시키는 사람들만이 다음에 BodyBodyRead 방법을 실행할 것이라고 알려줍니다. 여기서는 자신의 비즈니스 관련 차단 및 일치 * @param methodparameter * @param targettype * @param convertype * @return */ @override public boolean supports (methodparameter methodtarameter, tarting targettype, class <? extends httpmessageconverter <? >> return) {return) {return return) {return return) (Abstract Jackson2httpmessageConverter.class.isAssignableFrom (converterType) && methodParameter.getParameterAnnotation (jsonView.class)! = null); } // 여기에 특정 사전 수술이 있습니다 ... 다음 예제는이 매개 변수 입력 메소드가 @jsonView modification @Override public httpinputMessage (httpinputMessage inputMessage, MethodParameter MethodParameter, class <? extends httpmessageConception)가 있는지 확인하는 것입니다. {jsonview annotation = methodparameter.getParameterAnnotation (jsonview.class); class <?> [] classe = annotation.value (); if (classs.length! = 1) {새로운 불법 불법 행위 exception ( "@jsonview는 정확히 1 클래스 인수를 사용하여 신체 조언을 지원합니다." + methodParameter); } 새 매핑 jacksonInputMessage를 반환합니다 (inputMessage.getBody (), inputMessage.getHeaders (), 클래스 [0]); }}Ginseng 수출
ResponseBodyAdvice : @ResponseBody의 모든 매개 변수에 대한 처리
참조 사례 :
@controllerAdVicePublic 클래스 LogresponseBodyAdvice는 응답 bodyAdvice { / ** * * @param returnType * @param convertype * / @override public boolean supports (MethodParameter returnType, class converterType) {return true; } @Override Public Object (Override Public Object (객체 본문, MethodParameter returnType, mediaType SelectedContentType, Class SelectedConverterType, ServerHttpRequest 요청, ServerHttPresponse 응답) {// 처리하기 전에 반환 된 결과 객체입니다. }}주목해야 할 것
사용자 정의 처리 객체 클래스는 @controlleradvice 주석으로 추가되어야합니다!
왜?
initControllerAdviceCache() 코드에서 RequestMappingHandlerAdapter 클래스가
목록 <controlleradvicebean> beans = controlleradvicebean.findannotatedBeans (getApplicationContext ()); AnnotationAwareArderComparator.sort (bean);
ControlLerAdviceBean.FindAnnotatedBeans 메소드는 클래스에 ControlLerAdvice 주석이있는 클래스를 찾아 처리에 추가됩니다.
공개 정적 목록 <OntrollEradViceBean> findAnnotatedBeans (ApplicationContext ApplicationContext) {list <controllerAdviceBean> beans = new ArrayList <controllerAdviceBean> (); for (문자열 이름 : beanfactoryUtils.beannamesypeincludedAncestors (ApplicationContext, object.class)) {if (ApplicationContext.FindAntOntationOnbean (name, controllerAdvice.class)! = null) {beans.add (new ControlLeradViceBean (name, applicationContxt)); }} 반환 콩; }따라서 귀하의 요구에 따라 결과의 수신 및 발신 결과를 정의하고 특별한 대우를 할 수 있습니다 ...
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.