[스프링 팁] spring에서 AOP 활용하기, 환경세팅 :: 소림사의 홍반장!

 

1.  적용할 프로젝트에서 아래 소스를 src > main > webapp > WEB-INF > spring 안에 있는 모든 설정파일에 입력한다. 

<aop:aspectj-autoproxy proxy-target-class="true" />

 

2.  Aspect 클래스를 다음과 같이 만든다.

package kr.co.khi.common;

 

import org.apache.log4j.*;

import org.aspectj.lang.*;

import org.aspectj.lang.annotation.*;

import org.springframework.util.*;

 

@Aspect

public class CommonAspect {

 // Aspect 구성요소

 // 1. pointcut : 어떤 클래스의 메소드에 대해서

 //         Aspect 적용할지에대한 정규식과 같은 문법

 // 2. advice : target(적용할 클래스의 메소드)에 적용할 소스

/*

 *  ? 는 생략가능

     execution(modifiers-pattern? ret-type-pattern

             declaring-type-pattern?

             name-pattern(param-pattern) throws-pattern?)

 */

    // @Pointcut("within(kr.co.khi.*)") 도 가능

    @Pointcut("execution(* kr.co.khi..*.*(..))")

    private void all() {

        // 가명메소드 : private void 만들어야 하고 body 내용이 없어야 한다.

    }

   

    // around advice 메소드 시작전과 후를 감싸서 실행되는 advice

    @Around("all()")

    public Object around(ProceedingJoinPoint pjp) throws Throwable {

        // 규칙 : public object 선언, 인자값 첫번째는 ProceedingJoinPoint

       

//        System.out.println("메소드 실행 전!");

        Object obj = pjp.proceed();

//        System.out.println("메소드 실행 후!");

       

        return obj;

    }

}

 

3. servlet-context.xml 파일에 아래의 설정을 추가한다.

<beans:bean class="kr.co.khi.common.CommonAspect" />

 

4. Aspectj weaver 와 Code Generation Library 를 다운받기위해 아래 소스를 pom.xml에 추가한다.

        <dependency>

                <groupId>org.aspectj</groupId>

                <artifactId>aspectjweaver</artifactId>

                <version>1.7.0</version>

        </dependency> 

 

        <dependency>

                <groupId>cglib</groupId>

                <artifactId>cglib-nodep</artifactId>

                <version>2.2.2</version>

        </dependency>

 

 

세팅 완료 후 콘솔 실행 내역

 

 

다른 카테고리의 글 목록

Dev. 스프링/환경세팅 카테고리의 포스트를 톺아봅니다