Spring @Controller и Transactionmanager

У меня есть базовый контроллер Spring

package org.foo;
@Controller
public class HelloWorldController implements IHelloWorldController
{
 @RequestMapping(value = "/b/c/", method = RequestMethod.GET)
 public void doCriticalStuff(HttpServletRequest request, HttpServletResponse response){
 //...
 }
}

Протестировано через curl -X GET http://****:myPort/b/c/ Что отлично работает.

Если я настраиваю управление транзакциями через

<bean id="txManager">
 </bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
 <tx:attributes>
 <tx:method name="*">
 </tx:method></tx:attributes>
</tx:advice>
<aop:config>
 </aop:config>

Отображение не работает. Я получаю ошибку 404 на стороне клиента на сервере. Метод не вводится. Выполнение теста JUnit с точкой останова в doCriticalStuff Я вижу AopUtils.invokeJoinpointUsingReflection(Object, Method, Object[]) line: ..., поэтому используется конфигурация транзакции.

Но отображение больше не работает. Есть идеи?

Я использую Spring 3.0.2.RELEASE

1 ответ

Транзакционный аспект применяется с помощью динамического прокси, и он не позволяет Spring MVC обращаться к аннотациям @RequestMapping в целевом классе. Вы можете использовать как обходной путь.

Команда

Spring говорит, что они не исправили это поведение по причинам эффективности (см. комментарий к SPR-5084)

licensed under cc by-sa 3.0 with attribution.