Если вы хотите регистрировать каждое использование, вам, вероятно, придется использовать AOP . Это зависит от того, какие фреймворки вы используете, если есть простой способ сделать это. Вот как это может выглядеть в Spring :
public class DeprecatedLoggerAdvice implements MethodInterceptor
{
private Logger log = LoggerFactory.getLogger(this.getClass());
@Override
public Object invoke(MethodInvocation invocation) throws Throwable
{
Methode method = invocation.getMethod();
Annotation[] annotations = method.getAnnotations();
boolean isDeprecated = // Check it annotations has the deprecated one in here
if(isDeprecated)
{
log.warn("Called deprecated method {}", method.getName());
}
invocation.proceed();
}
}
Хотя, как уже упоминалось, это плохо сказывается на производительности. Если вы используете его в своем приложении, вы должны использовать этот подход в сочетании с модульными тестами, охватывающими большую часть вашего кода. Затем вы можете зарегистрировать и удалить использование устаревших методов, а затем отключить AOP в производственном режиме.