2014-05-20 2 views
1

xml에서 제공된 여러 매개 변수를 사용하여 여러 pointcuts에 동일한 aspect 메서드를 사용할 수 있습니까? 이 같은 뭔가 (1과 2는 매개 변수입니다) : 나는 methodA를 호출 할 때xml과 다른 포인트 컷에 대해 동일한 애스펙트 메서드에 매개 변수를 전달

<!-- Aspect --> 
<bean id="logAspect" class="LoggingAspect" /> 
<aop:config> 
<aop:aspect id="aspectLoggging" ref="logAspect" > 
    <aop:pointcut id="testAround" expression="execution(* methodA(..))" /> 
    <aop:pointcut id="testAroundC" expression="execution(* methodC(..))" /> 

    <!-- @Around --> 
    <aop:around method="logProcess(1)" pointcut-ref="testAround" /> 
    <aop:around method="logProcess(2)" pointcut-ref="testAroundC" /> 
</aop:aspect> 

내가 출력 1 에 logProcess 방법을 원하고 내가 methodC를 호출 할 때 출력이

에 logProcess 방법을 원하는

내 logProcess 방법 :

public Object logProcess(ProceedingJoinPoint joinPoint) throws Throwable {} 

Spring @Transactional wont rollback after putting aspect around method

+0

난 그렇게 생각하지 않습니다. 왜 그걸하고 싶니? –

+0

나는 여러 프로세스 (메소드)를 가지고 있기 때문에 ID를 가진 마녀를 DB에 쓰고 싶다. 그리고 같은 방법을 재 작성하고 싶지만 다른 매개 변수 (logProcess)를 사용하고 싶습니다. – Juka

답변

0

나는 꽤 확신하지 못합니다. 당신은 일반적으로 매개 변수로 가지고있는 ProceedingJoinPoint 오브젝트를 활용하여 이러한 종류의 기능을 달성 할 수있다 그러나

는 :

public Object logProcess(ProceedingJoinPoint joinPoint) throws Throwable 

    MethodSignature signature = (MethodSignature) joinPoint.getSignature(); 
    Method method = signature.getMethod(); 
    if(method.getName().equals("methodA")) { 

    } 
    //etc.. 
+0

음, 이것은 매우 유용합니다. 이 id-s를 DB의 메소드 이름과 연결할 수 있으며 여러 개의 if 문이 필요하지 않습니다. 감사! – Juka

관련 문제