Spring AOP 차단기 의 기본 실현

5029 단어 springaop차단기
원숭이 가 꿈 에서 해결 하 는 버그
꿈 을 꾸 지 않 는 사람 은 없다.모든 꿈 의 순위 에서 백일몽 이 가장 슬프다.프로그램 원숭이 인 여러분 이 잠 을 한숨 잤 는 지 모 르 겠 습 니 다.그리고 잠 들 기 전 코드 에서 어떻게 해도 정 해 지지 않 은 Bug 를 꿈 에서 해결 해 준 경험 이 있 습 니까?어차피 있 었 는데
AOP 가 뭐야?
AOP 는 Aspect Oriented Programming 의 줄 임 말로 절단면 프로 그래 밍 을 위 한 사전 컴 파일 방식 과 런 타임 동적 대 리 를 통 해 프로그램 기능 의 통일 적 인 유 지 를 실현 하 는 기술 을 의미한다.AOP 는 OOP 의 연장 이 고 소프트웨어 개발 의 핫 이 슈 이자 Spring 프레임 워 크 의 중요 한 내용 이 며 함수 식 프로 그래 밍 의 파생 모델 이다.AOP 를 이용 하여 업무 논리의 각 부분 을 격 리 하여 업무 논리의 각 부분 간 의 결합 도 를 낮 추고 프로그램의 중용 성 을 높이 는 동시에 개발 의 효율 을 높 일 수 있다.
사람 이 알 아들 을 수 있 는 말 은 AOP 는 방법 집행 전후 에 똑 같은 업무 논 리 를 완성 할 수 있 고 업무 코드 를 바 꿀 필요 가 없다 는 것 으로 이해 할 수 있다.예 를 들 어:지금 필요 한 것 이 있 습 니 다.프로젝트 의 모든 방법 앞에서 한 마디 를 출력 해 야 합 니 다.실행 하 겠 습 니 다!수 요 는 매우 명확 하 다.일반적인 해결 방식 은 모든 구체 적 인 방법 맨 앞 에 한 마디system.out.print(" !");를 추가 하 는 것 이다.이런 생각 을 하 는 프로그래머 는 일반 프로그램 원숭이 이다.물론 이것 은 농담 이다!이런 코드,만약 한두 가지 방법 이 이런 방식 으로 아무런 문제 도 없 이 완전히 가능 하 다 면,만약 몇 십 개,몇 백 개의 이런 방법 이 있다 면?
이때 우 리 는 AOP 를 사용 하여 상기 논 리 를 완성 할 수 있 습 니 다.어떠한 방법 도 바 꾸 지 않 고 침입 하지 않 는 방식 으로 이 수 요 를 완성 할 필요 가 없습니다.
AOP 가 실제 프로젝트 에서 운용 하 는 장면 은 주로 권한 관리(Authority Management),사무 관리(Transaction Management),보안 관리(Security),로그 관리(Logging),디 버 깅 관리(Debugging)등 이 있다.업무 논리 와 밀접 한 관련 이 없 는 이런 공공 방법 들 을 우 리 는 AOP 를 사용 할 수 있다.
Spring AOP 와 MVC 차단 기 는 또 무엇 입 니까?
위의 설명 을 통 해 저 는 AOP 가 사실은 디자인 모델 이 라 고 할 수 있 거나 프로 그래 밍 사상 이 라 고 할 수 있다 는 것 을 알 게 되 었 습 니 다.Spring AOP 는 Spring 프레임 워 크 가 AOP 라 는 사상 에 대해 일련의 기술 실현 과 포장 을 했 기 때문에 우 리 는 설정 만 하면 이 모델 에 도달 할 수 있 고 설정 파일 에서<aop:config>요 소 를 사용 할 수 있 습 니 다.그럼MVC 또 뭐야?Spring MVC 프레임 워 크 가 AOP 를 구현 하 는 방식 으로 설정 파일 에<mvc:interceptors>요 소 를 사용 하여 설정 한 것 으로 이해 할 수 있다.이 두 가지 방식 은 바로 AOP 의 프로 그래 밍 사상 을 실현 한 것 이다.우 리 는 일정한 설정 만 하면 된다.현재 많은 사람들 이 Spring AOP 와 MVC 차단 기 를 같은 방식 으로 보고 있 는데 모두 차단기 나 AOP 라 고 부른다.
코드 를 훑 어보 도록 하 겠 습 니 다.
1.새로 만 든TestInterceptor종 류 는HandlerInterceptorAdapter에 계승 된다.

구체 적 인 코드:

package cn.mayongfa.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class TestInterceptor extends HandlerInterceptorAdapter {
  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
      //         
      System.out.println("       !");
      super.afterCompletion(request, response, handler, ex);
  }

  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
      //          
      System.out.println("        !");
      super.postHandle(request, response, handler, modelAndView);
  }

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
      //          
      System.out.println("       !");
      return super.preHandle(request, response, handler);
  }
}
  • preHandle(..):프로세서 가 실제 실행 되 기 전에 실 행 됩 니 다.
  • post Handle(..)프로세서 가 실 행 된 후에 실 행 됩 니 다.
  • after Complete(..)는 전체 요청 처리 가 끝 난 후에 실 행 됩 니 다.
  • 이 세 가지 방법 은 각종 유형의 전처리 와 사후 처리 수요 에 충분 한 유연성 을 제공 했다.
    2./WebContent/WEB-INF/springMVC-servlet.xml<mvc:interceptors>요 소 를 설정 하면 요청 을 차단 할 수 있 습 니 다.
    
    <mvc:interceptors>
      <!--      mvc:interceptors    Interceptor         -->
      <mvc:interceptor>
        <!--    mvc:interceptor                   -->
        <mvc:mapping path="/api/**"/>
        <bean class="cn.mayongfa.interceptor.TestInterceptor">
        </bean>
      </mvc:interceptor>
    </mvc:interceptors>
    물론,당신 은 당신 의 요구 에 따라 차단 할 수 있 습 니 다.제 가 여기 서 차단 한 것 은 api 경로 아래 의 모든 요청 입 니 다.
    3.테스트 해 보기
    제 프로젝트 에 /api/user/getlist요청 이 있 습 니 다.브 라 우 저 에 입력 해 보 세 요.

    요청 데이터 성공,콘 솔 출력 보기:

    우리 가TestInterceptor클래스 에서 출력 한 것 을 보 았 습 니 다.이것 이 바로 Spring AOP 차단기 의 기본 적 인 실현 입 니 다.여기까지,당신 은 어떻게 AOP 를 사용 하여 업무 논리 와 무관 하고 코드 전후 에 실행 해 야 하 는 일반적인 방법 을 진행 하 는 지 알 게 되 었 을 것 입 니 다.이것 이 바로 제 가 AOP 의 역할 을 이해 하 는 것 입 니 다.
    다운로드 주소:SpringDemo_jb51.rar
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기