2011-02-16 7 views
1

일부 조언을 쓰고 있으며 조언이 오기 전에 커밋해야합니다. 저장 및 삭제 작업을하는 것처럼 보이지만 업데이트하면 조언을 철저히 실행 한 다음 예외를 throw합니다.Spring AOP 주문 - 조언 전 트랜잭션

try { 
    retVal = pjp.proceed(); 
} catch (Exception e) { 
    PSPSFaultException fault = new PSPSFaultException(e); 
    pmLog.error(ERR_MSG, fault); 
    throw fault; 
} 

여기에서 알 수 있듯이, 나는 우리 자신의 런타임 예외에서 예외를 감싸려고 노력하고있다.

나는 순서를 시도 :

<tx:annotation-driven transaction-manager="txManager" order="1"/> 

@Around("execution(* blah.blah.PersistenceProvider.*(..))") 
@Order(value=2) 
public Object persistenceWrapper(ProceedingJoinPoint pjp) throws Throwable { 

그러나 이것은 스택이나 기능에 어떤 변화를하지 않는 것.

@Transactional(propagation = Propagation.REQUIRED) 
public class PersistenceProviderImpl extends HibernateDaoSupport implements PersistenceProvider { 

@Override 
public void update(Object o) { 
    this.getHibernateTemplate().update(o); 
} 

조언을 받기 전에 업데이트를받을 수있는 방법이 있습니까? 거래는

+0

특히, 내 테스트가 업데이트되는 것을 :

이 나는 ​​화면 파일 (내가 하나가 문제가되지 않는 것 같아요) 중 하나에 포함했다. HibernateOptimisticLockingFailureException 오류가 발생합니다 ... – markthegrea

답변

7

좋아요 ... DAO를 수준에, 그래서 당신은 잘못이 일을하고있다 :

  1. 당신은 근처에 트랜잭션 관리 (높은 우선 순위에 대한 귀하의 조언에 가까운 smaler 값과 큰 값을 가져야한다 통 더는 전체 @Aspect 클래스 (이상한 앞에 @Order(1) 주석을 넣어해야
  2. ) 나중에 실행, 트랜잭션 관리에 대한 우선 순위가 낮은 있지만) 나를 위해
작동 - 조언은, 처음 실행 이 같은

뭔가 : 위의 조언이 작동하지 않는 내 경우

... 
<tx:annotation-driven transaction-manager="txManager" order="200"/> 
... 
@Order(1) 
@Aspect 
public class MyAspect { 
... 
+1

[Spring docs] (http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop.html# aop-ataspectj-advice-ordering) _2 가지 측면에서,'''Ordered.getValue()''(또는 주석 값)에서 더 낮은 값을 반환하는 aspect가 더 높은 우선 순위를가집니다. _ – opyate

+0

이것은 " ''int HIGHEST_PRECEDENCE = Integer.MIN_VALUE;''' – opyate

1

. Maven을 컴파일 할 때 컴파일 타임을 사용하고 있는데, 이것이 이유 일 수 있습니다.

내 목표는 트랜잭션이 완료된 후 데이터베이스 예외를 처리하고이를 다른 예외로 래핑하는 것이 었습니다. 데이터베이스에없는

@DeclarePrecedence(value = "*..*TransactionException*,  org.springframework.transaction.aspectj.AbstractTransactionAspect, *..*Logging*, *") 
+0

이것은 나를 위해 일했다. –

관련 문제