Переопределить / отключить аспект во время выполнения - PullRequest
0 голосов
/ 03 сентября 2018

В моем приложении для весенней загрузки у меня есть зависимость от внешнего jar-файла, который содержит класс, помеченный аннотацией, для которого запускается @Aspect из этого jar-файла.

У меня есть метод dao, аннотированный пользовательской аннотацией mu:

@MyAnnotation
public void save(MyEntity entity)
{
   super.save(entity);
}

У меня есть аспект, в котором есть совет, после отправки сообщения save () вызывается метод:

@Aspect
public class MySuperAspect
{
  @Autowired
  MessageSender messageSender;

  @Around("@annotation(MyAnnotation) && args(entity)")
  public void sendMessage(MyEntity entity)
  {
     messageSender.send();
  }
}

Мне нужен метод Дао из банки, но я хочу отключить аспект для него.

Аспект создается с помощью конфигурации Spring XML, которая также находится в банке, которую я использую.

Я мог бы изменить сам аспект, но это нежелательно, поскольку он используется не только моим приложением с весенней загрузкой.

Я пытался:

  • Отключение конфигурации xml от сканирования в моем приложении весенней загрузки;
  • Изменение конфигурации xml на аннотации и фильтрация при сканировании;
  • Добавление @ConditionalOnExpression и @ConditionalOnProperty к аспекту, который должен быть отключен свойством;

На данный момент единственный способ, который работает, - добавить аннотацию @Value со свойством, с помощью которой я могу контролировать логику в совете, но мне интересно, это единственный способ сделать это или, возможно, я что-то упустил?

1 Ответ

0 голосов
/ 04 сентября 2018

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

...