Как установить springframework @Transactional с AspectJ - PullRequest
6 голосов
/ 03 февраля 2010

Я хочу использовать spring-aspects, чтобы сделать мои методы транзакционными, но без использования Spring AOP (Spring AOP прекрасно работает с: <tx:annotation-driven/>).Я использую Maven для управления своим проектом.

Есть ли способ сделать время компиляции , ткачество на моих классах проекта, чтобы "они были Transactional".Я пытался использовать плагин AspectJ Maven для Mojo, но безрезультатно.

Пожалуйста, помогите.

Ответы [ 3 ]

4 голосов
/ 29 мая 2013

может быть, вы можете попробовать это:

<tx:annotation-driven transaction-manager="transactionManager" mode="aspectj"/>
4 голосов
/ 06 февраля 2010

Я понял это.Плагин Maven работает нормально, но проблема была в моем весеннем конфиге: у меня было:

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>

Что мне было нужно:

<bean id="transactionManager"   class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean class="org.springframework.transaction.aspectj.AnnotationTransactionAspect" factory-method="aspectOf">
    <property name="transactionManager" ref="transactionManager"/>
</bean>

Теперь он работает нормально.И производительность моих методов @Transactional улучшилась, и это то, к чему я стремился.

Вот моя конфигурация плагина maven aspectj:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <version>1.3</version>
    <configuration>
        <aspectLibraries>
            <aspectLibrary>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
            </aspectLibrary>
       </aspectLibraries>
        <source>1.5</source>
        <showWeaveInfo>true</showWeaveInfo>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>compile</goal>
            </goals>
        </execution>
    </executions>
</plugin>

надеюсь, это кому-нибудь поможет.

1 голос
/ 26 ноября 2015

Вот ссылка на ответ, который я дал о том, как сделать то же самое в конфигурации Java:

Spring @Transactional применяется как в качестве динамического Jdk-прокси, так и аспект aspectj

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...