Arhn - архитектура программирования

Весна 4 + аспекты

У меня проблема с аспектами. Они не стреляют. У меня есть малый аспект:

@Aspect
@Component
public class SynchronizingAspect {
    @Pointcut("execution(public * *(..))")
    @Around("synchronize() && @annotation(Synchronized)")
    public void synchronize(ProceedingJoinPoint joinPoint) throws Throwable {
        Logger.getGlobal().log(Level.SEVERE, "LOOOOOOOOL");
        joinPoint.proceed();        

    }
}

и метод с аннотацией:

@Synchronized
@Transactional
@Override
public User create(Map<String, Object> values) {
    return super.create(values); 
}

в моем файле конфигурации у меня есть

<aop:aspectj-autoproxy />

Я использую весну 4.1.5

и зависимости для aop:

<dependency>
<groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>

    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>1.6.11</version>
    </dependency>

    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.6.11</version>
    </dependency>

Я буду очень признателен, если кто-то может сказать мне, почему это не работает, и помочь мне исправить это.

С уважением, Мэтт.


  • Я изменил зависимости аспектов на версию 1.8.5, но это ничего не меняет. 26.02.2015
  • Пробовали ли вы разделить @Pointcut и @Around в вашем аспекте на два отдельных метода? 26.02.2015
  • Да, я устал думать так imgur.com/cqLWuQ0 26.02.2015
  • Откуда вы вызываете свой метод create? Из другого бина Spring? 26.02.2015
  • Да, с контроллера - imgur.com/xOJeJR7 26.02.2015
  • Ваш аспект находится в пакете, на который распространяется @ComponentScan или <context:component-scan>? 26.02.2015
  • да. Аспект находится в pl.flomedia.springtpl.aspect, а это My @ComponentScan — imgur.com/wBlt1Tm 26.02.2015
  • Я отказываюсь от предыдущего комментария, вам нужно @Component, чтобы @Aspect было поднято. 26.02.2015
  • У вас есть идеи, что может быть не так? 26.02.2015

Ответы:


1

Кажется, что метод @Transactional на create мешает вашему пользовательскому аспекту.

Попробуйте указать @Order на вашем аспекте, как показано ниже. Это сделает аспект с порядком выполнения выше, чем у @Transactional. (Обратите внимание, что значение аргумента 1 является произвольным, чтобы переопределить значение по умолчанию наименьший приоритет, установленный для порядка)

@Aspect
@Component
@Order(1)
public class SynchronizingAspect { ... }
27.02.2015

2

Я сделал это. Я удаляю <aop:aspectj-autoproxy /> и использую @EnableAspectJAutoProxy, и теперь это работает. Спасибо за ответы!

27.02.2015
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..