Aspectj не ловит все события в пружинной платформе?

Почему вы этого не делаете:

[chr(x) for x in [66,53,0,94]]

Это называется пониманием списка. Вы можете найти много информации о Google, но вот ссылка на документацию Python (2.6) на понимание списков . Однако вас может заинтересовать документация Python 3 .

7
задан cb4 21 November 2016 в 21:00
поделиться

4 ответа

Ваши точки останова не поражаются, потому что Вы используете Прокси AOP Spring. См. understanding-aop-proxies для описания того, как Прокси AOP являются особенными.

В основном платформа MVC собирается звонить handleRequest метод на прокси Вашего контроллера (который, например, MultiActionController Вы используете в качестве реализаций базового класса), этот метод затем выполнит "внутренний" вызов к своему rebuildThumbnail методу, но это не пройдет прокси и таким образом не возьмет аспектов. (Это не имеет никакого отношения к методам, являющимся окончательным.)

Для достижения, что Вы хотите исследуйте использующий "реальный" AOP через время загрузки, переплетаясь (который Пружинные опоры очень приятно).

2
ответ дан 7 December 2019 в 14:39
поделиться

AspectJ не работает хорошо с классами в сети Spring платформа MVC. Считайте нижнюю часть поля "Open for extension..." на правой стороне страницы

Вместо этого смотрите на интерфейс HandlerInterceptor.

Новый Spring Аннотации MVC могут работать также с тех пор Классы контроллера, является всем POJOs, но я не попробовал его сам.

1
ответ дан 7 December 2019 в 14:39
поделиться

Основная установка смотрит хорошо.

Синтаксис может быть упрощен немного, не определив оперативный pointcut и просто указав метод, к которому должен быть применен после-того,-как-совет. (Именованные pointcuts для методов автоматически создаются для Вас.)

например.

@After( "com.example.bg.web.controllers.assets.AssetAddController.handleRequest()" )
public void afterHandleRequest() {
    log.info( "test111" );
}

@After( "com.example.bg.web.controllers.assets.AssetThumbnailRebuildController.rebuildThumbnail()" )   
public void afterRebuildThumbnail() {
    log.info( "test222" );
}

Пока rebuildThumbnail метод не является последним, и имя метода и класс корректны. Я не вижу, почему это не будет работать.

см. http://static.springframework.org/spring/docs/2.0.x/reference/aop.html

1
ответ дан 7 December 2019 в 14:39
поделиться

Действительно ли это столь же просто как написание? или есть ли в вопросе просто опечатки? Иногда Вы пишете rebuildThumbnail и иногда Вы пишете rebildThumbnail

Методы, которые Вы пытаетесь переопределить с советом, не являются последними методами в платформе MVC, поэтому пока ответ bpapas полезен, мое понимание - то, что это не проблема в этом случае. Однако удостоверьтесь что rebuildThumbnail решение контроллера не является окончательным

@bpapas: исправьте меня, если я неправ. Собственное действие контроллера программиста - то, что он пытается переопределить. При рассмотрении источника MultiActionController (и его родители) единственный завершенный метод потенциально в стеке MultiActionController.invokeNamedMethod, хотя я не на 100% уверен, было ли это в стеке в то время или нет. Был бы, имея завершенный метод выше причина стека проблема, добавляющая совет AOP методу далее вниз?

0
ответ дан 7 December 2019 в 14:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: