SpringMVC 의 어댑터 HandlerAdapter 분석

Dispatcher Servlte 의 initHandlerAdapters 방법 은 설정 파일 정보 에 따라 HandlerAdapter 를 handlerAdapters(List)에 등록 합 니 다.
설정 파일 에 설정 되 어 있 지 않 으 면 기본 설정 은 Dispatcher Servle.properties 파일 을 읽 습 니 다.이 파일 에는 세 가지 HandlerAdapter:HttpRequestHandlerAdapter,Simple Controller HandlerAdapter,AnnotationMethodHandlerAdapter 가 설정 되 어 있 습 니 다.

SimpleControllerHandlerAdapter :  Controller         
HttpRequestHandlerAdapter   :HTTP        
RequestMappingHandlerAdapter  :    (@Controller)       
getHandler 방법 은 요청 에 따라 handlerAdapters 에 등 록 된 어댑터 를 옮 겨 다 니 며 해당 하 는 어댑터 로 처리 합 니 다.

for (HandlerMapping hm : this.handlerMappings) {
		HandlerExecutionChain handler = hm.getHandler(request);
		if (handler != null) {
		  return handler;
		}
}
Handler Adapter 인 터 페 이 스 는 세 가지 방법 이 있 습 니 다.
在这里插入图片描述
supports 방법:이 어댑터 가 이 Handler Method 를 지원 하 는 지 여 부 를 판단 하 는 것 입 니 다.handler 를 얻 었 을 때 이 인터페이스 하위 클래스 를 판단 하 는 방법 입 니 다.
handle 방법:컨트롤 러 처리 함 수 를 실행 하고 Model AndView 를 가 져 옵 니 다.이 어댑터 호출 규칙 에 따라 handler 방법 을 실행 하 는 것 입 니 다.
정상적으로 호출 을 작성 하려 면 여러 개의 if else 를 사용 하여 instance of 를 판단 해 야 합 니 다.

if(handler instanceof HttpRequestHandler){
 handle1();//HttpRequestHandler     
} else if (handler instanceof Controller){
 handle2();//Controller     
} else if (handler instanceof Servlet){
 handle3();//Servlet     
}
이 방법 은 새로운 프로세서 구현 방식 을 추가 하려 면 원본 코드 를 수정 하고 else 를 추가 하여 처리 논 리 를 추가 해 야 합 니 다.확장 개방,닫 기 원칙 에 부합 되 지 않 습 니 다.HandlerAdapter 를 사용 한 후 프로세서(Controller)를 추가 해 야 할 때 HandlerAdapter 하나만 추가 하면 됩 니 다.논 리 는 그의 슈퍼 ports 방법 에서 처리 논 리 는 handle 에 있 으 며 다른 코드 를 수정 할 필요 가 없다 고 판단 합 니 다.
SpringMVC 의 어댑터 HandlerAdapter 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.SpringMVC 어댑터 HandlerAdapter 에 관 한 더 많은 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기