У меня есть 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);
}