Добавление советов по поводу финальных методов в AspectJ - PullRequest
0 голосов
/ 29 мая 2019

Можно ли добавить совет относительно окончательного метода с использованием AspectJ? Я полностью осознаю, что это невозможно с помощью Spring AOP. Но я не смог найти ничего, связанного с AspectJ.

1 Ответ

0 голосов
/ 30 мая 2019

Извините за вводное личное мнение, но я хочу сказать следующее: Вы хотите использовать AspectJ. Почему бы вам просто не попробовать? Вы получите результат намного быстрее, чем написав здесь вопрос и ожидая, пока кто-нибудь ответит на него.Формат вашего вопроса также не подходит для SO, потому что вы не публикуете какой-либо код, с которым у вас есть проблемы, вы просто задаете общий вопрос.

Да, инструментарий финальных классов и / или методов возможен с AspectJ:

Приложение драйвера с последним методом:

package de.scrum_master.app;

public class Application {
  public final void doSomething() {}

  public static void main(String[] args) {
    new Application().doSomething();
  }
}

Формат в собственном синтаксисе AspectJ:

package de.scrum_master.aspect;

public aspect MyAspect {
  Object around() : execution(* doSomething()) {
    System.out.println(thisJoinPoint);
    return proceed();
  }
}

Aspect в синтаксисе @AspectJ:

Я действительно предпочитаю собственный синтаксис, но в любом случае, по какой-то неизвестной причине некоторые люди предпочитают эту уродливую и многословную версию с импортом, бросками, явно объявленными экземплярами точек соединенияи более сложный способ продолжить:

package de.scrum_master.aspect;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;

@Aspect
public class MyAspect {
  @Around("execution(* doSomething())")
  public Object aroundAdvice(ProceedingJoinPoint thisJoinPoint) throws Throwable {
    System.out.println(thisJoinPoint);
    return thisJoinPoint.proceed();
  }
}

Журнал консоли:

Эффект одинаков для обоих вариантов аспекта:

execution(void de.scrum_master.app.Application.doSomething())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...