Spring 개발환경 설정 정리2[AOP, intercepter]

2016. 12. 7. 21:35·공부/Spring


>>AOP

 

1. AOP 관련 라이브러리 추가,(spring-tx :트랜잭션 처리를 위한 라이브러리)

               <!-- 트랜잭션 처리 -->

               <dependency>

                      <groupId>org.springframework</groupId>

                      <artifactId>spring-tx</artifactId>

                      <version>${org.springframework-version}</version>

               </dependency>

               <!-- AOP관련 라이브러리 -->

               <dependency>

                      <groupId>org.springframework</groupId>

                      <artifactId>spring-aop</artifactId>

                      <version>${org.springframework-version}</version>

               </dependency>

 

2. AOP기능 적용을 위해서는 AspectJ 언어의 문법을 이용함. >라이브러리 추가

               <!-- AspectJ -->

               <dependency>

                      <groupId>aspectj</groupId>

                      <artifactId>aspectjrt</artifactId>

                      <version>1.5.4</version>

               </dependency>

              

               <dependency>

                      <groupId>aspectj</groupId>

                      <artifactId>aspectjweaver</artifactId>

                      <version>1.5.4</version>

               </dependency>

 

3. root-context.xml 설정

aop,context,mybatis-spring,tx에 체크

        <context:component-scan base-package="org.zerock.persistence"></context:component-scan>

        <context:component-scan base-package="org.zerock.service"></context:component-scan>

        <context:component-scan base-package="org.zerock.aop"></context:component-scan>

       

        <aop:config></aop:config>

        <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

 

 

 

>>Interceptor

 

단순 로그인 처리를 하는 가장 간단한 방법은 Servlet의 Filter와 유사한 인터셉터(Interceptor)를 활용하는 방법이다.

인터셉터는 웹 애플리케이션 내에서 특정한 URI 호출을 가로채는 역할을 함.

기존 컨트롤러의 로직을 수정하지 않고도 사전이나 사후 제어가 가능함.

Filter와 Interceptor

 

Filter와 인터셉터는 특정 URI에 접근할 때 제어하는 용도로 사용되나 가장 큰 차이는. Interceptor는 스프링에서 관리되기 때문에 스프링 내의 모든 객체(빈)에 접근이 가능함.

 

Spring AOP 기능과 HandlerInterceptor의 차이

 

사전,혹은 사후 처리기능을 둘다 할 수 있지만 일반적인 경우라면 인터셉터를 활용한다.

Advice의 경우 JointPoint나 ProceedingJointPoint 등을 활용해서 호출 대상이 되는 메소드의 파라미터 등을 처리하는 방식임.

인터셉터는 Filter와 유사하게 HttpServletRequest, HttpServletResponse를 파라미터로 받는 구조임.

 

-------------------------------------------

환경설정

servlet-context.xml - SampleInterceptor.java를 org.zerock.interceptor 패키지에 만든 상태임.

SampleInterceptor를 스프링에 인식하려면 servlet-context.xml에 설정을 추가해야함. 인터셉터의 경우 URI설정이 추가됨.

각 인터셉터의 <mapping>에는 원하는 URI를 지정함. **나 *와 같은 패턴을 적용할 수 있다.

 

XXXInterceptor.java 파일의 경우 HandlerInterceptorAdapter를 상속받아 메소드를 오버라이드 해서 사용한다.

postHandle 메소드 : 컨트롤러 동작 이후에 처리. Spring MVC의 Front Controller인 DispatcherServlet이 화면을 처리하기 전에 동작.

preHandle 메소드 : 컨트롤러 동작 이전에 가로채는 역할로 사용 가능

afterCompletion 메소드 : DispatcherServlet의 화면처리가 완료된 상태에서 처리

       <!-- 인터셉터 설정 -->

       <beans:bean id="sampleInterceptor" class="org.zerock.interceptor.SampleInterceptor"></beans:bean>

      

       <interceptors>

               <interceptor>

                      <mapping path="/doA"/>

                      <mapping path="/doB"/>

                      <beans:ref bean ="smapleInterceptor"/>

               </interceptor>

       </interceptors>

 


public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)

에서 handler는 현재 실행하려는 메소드 자체를 의미합니다.

 


반응형
'공부/Spring' 카테고리의 다른 글
  • Spring security와 authentication 처리과정
  • 스프링 프레임워크 자원관리(BEAN)
  • Spring 개발환경 설정 정리[spring,Mybatis(mysql),tomcat]
  • 내가 헤깔려하는것을 다시 정리해봄.
JangGiraffe
JangGiraffe
안녕하세요~ 반갑습니다! 머무시면서 즐거운 시간 보내시길 바랍니다. 오픈카톡 : https://open.kakao.com/o/sYEBs0uh
  • JangGiraffe
    giraffe1010
    JangGiraffe
  • 전체
    오늘
    어제
    • 분류 전체보기 (390)
      • 공부 (155)
        • AI (3)
        • Spring (10)
        • JAVA (31)
        • python (6)
        • 기타 (12)
        • 메세지 (3)
        • Jsp,Servlet (4)
        • HTML (12)
        • Javascript (6)
        • C#,ASP.NET (2)
        • WEB (2)
        • DB (11)
        • Android (18)
        • [BaaS]Parse.com (4)
        • 졸업프로젝트 (4)
        • AWS,네이버클라우드플랫폼 (2)
        • Ubuntu (6)
        • maven (1)
        • 자료구조 (15)
        • 서버 (3)
      • 게임 (0)
      • 관심 (22)
        • 사진 (1)
        • 패스오브엑자일(POE) (1)
        • 월드오브워크래프트 (4)
        • 블로그 (7)
        • 이슈 (1)
        • IT (5)
        • 기타 게임 (3)
      • 자료 (2)
        • 면접 (2)
      • 먹거리 (103)
        • 음식리뷰 (99)
        • 카페리뷰 (4)
      • 여행 (35)
        • 국내여행 (23)
        • 해외여행 (12)
      • 생활정보 (68)
        • 생활정보 (33)
        • 상품리뷰 (34)
        • 세미나후기 (1)
      • 끄적끄적 (5)
        • 영화후기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 문의(카톡)
    • 방명록
  • 링크

    • 2zino
    • wildbluffer
  • 공지사항

  • 인기 글

  • 태그

    자취
    강서구맛집
    왕십리맛집
    양양 가볼만한 곳
    떡볶이
    ChatGPT
    마곡맛집
    강원도여행
    가양맛집
    김포맛집
    오징어난전
    시즈오카
    발산 회식
    돈벌기
    와우
    발산맛집
    맛집
    월드오브워크래프트
    홍대맛집
    제주도맛집
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
JangGiraffe
Spring 개발환경 설정 정리2[AOP, intercepter]
상단으로

티스토리툴바