Проблема с пружинойКак быть уверенным, что перехватчик вызывается после коммита? - PullRequest
0 голосов
/ 23 июля 2011

Я использую пружину 3.0.5 и с гибернацией.

  1. Перехватчик работает.
  2. Отправить идентификатор домена в очередь jms.
  3. Потребитель получает его и ищет домен, но работает быстрее, чем фиксация базы данных, и я получаю ноль.
  4. Как быть уверенным, что перехватчик будет вызываться после фиксации db?

    appCtx.xml

    <tx:annotation-driven order="10"  />
    
    
     <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
            <property name="entityManagerFactory" ref="entityManagerFactory" />
        </bean>
    
    <aop:aspectj-autoproxy />
    
    <bean id="domainProducerHandler" depends-on="domainEventService"
            class="org.test.service.DomainProducerHandler" factory-method="aspectOf">
            <property name="domainEventService" ref="domainEventService" />
            <property name="order" value="1" />
    </bean>
    
    ===================service class=====================
    @SendDomainEvent
    @Transactional
    public ProtoMessage sendDonation(String aa) {
       Domain domainObj = new Domain();
       domainRepository.saveAndFlush(domainObj);
    
       return domain;
    }
    
    
    ==================interceptor class===================**
    
    
    
    
        @AfterReturning(
        pointcut="@annotation(org.test.service.SendDomainEvent)",
        returning="retVal")
    public void processDomainReturn(Object retVal) {        
    
    ....
    
    try {       
        domainEventService.publishToQueue(endDonationSuccessEvent);
    } catch (Exception e) {
        log.error("error during send endDonationSuccessEvent: " + e);
    }
    

    }

Класс перехватчика реализует упорядоченный интерфейс. Я установил для параметра порядка значение tx: порядок, основанный на аннотациях = 10, но он не работает.

1 Ответ

0 голосов
/ 23 июля 2011

Что вы подразумеваете под «параметром заказа»? Поддерживаемые способы рекомендации по упорядочению в Spring AOP заключаются в интерфейсе @ Ordered или org.springframework.core.Ordered , который также определяет константы для самый высокий и самый низкий приоритеты.

...