Перехватывать все точки входа и выхода функций без сторонних компонентов - PullRequest
0 голосов
/ 25 мая 2018

У меня есть Java-программа.Я хотел бы перехватывать все входы и выходы каждой функции и регистрировать их, не изменяя существующие (~ 5k) тела функций.

Я знаю, что AspectJ и Spring AOP подходят для этого.Но, к сожалению, мне не разрешено использовать их в целевой системе (это не мое решение).

Одна из возможностей - использовать следующее:

void func()
{
    logger.logEntry();

    // here stuff

    logger.logExit();
}

Как мне этого добиться без каких-либо сторонних компонентов / инструментов (это очень важно!) Без необходимости вставлять эти упомянутые дополнительные следы?Есть ли какой-либо интерфейс Java / абстрактный класс или любой другой метод / возможность, которая может быть использована для этой цели?Или любой обработчик событий / подписчик и т. Д .?

Пока я гуглил, я нашел для этого только сторонние решения.

Каким будет лучшее решение, если абстрактный класс с 2 абстрактнымифункции, которые вызываются, если вызываются функции из расширенных классов.Как это:

public abstract class InterceptFunctionCalls
{
    // here the internal stuff that call the following methods below

    protected abstract void EnteredFunction(String func);
    protected abstract void ExitedFunction(String func);
}

1 Ответ

0 голосов
/ 25 мая 2018

Существует ли какой-либо интерфейс / абстрактный класс Java или любой другой метод / возможность, который можно использовать для этой цели?

Нет ... Вот почему некоторые сторонние компании решили показатьи обеспечить по необходимости.Java как нерасширенный язык не пытается предложить AOP.

...