Дело в том, что сопоставление контроллера выполняется во время выполнения, и если вы используете прокси-серверы AOP, прокси-объекты не имеют аннотаций во время выполнения, только их интерфейсы.Я могу придумать две возможные стратегии, чтобы обойти это ограничение.
Либо аннотируйте общие методы интерфейса, либо (если вы не хотите советовать всем контроллерам) создайте подчиненный интерфейс для типа реализации, явно аннотируяих методы.Я знаю, что это много переписанного кода и противоречит сути AOP, но я не знаю лучшего способа придерживаться прокси на основе интерфейса.
Другим способом было бы переключиться на прокси CGLib с использованием прокси-сервера.целевой класс = «истина».Таким образом прокси-классы должны (я не уверен в этом) сохранять аннотации.
Обновление: аннотирование вашего интерфейса должно работать следующим образом (если он работает)
public interface BaseController<T> {
@WebAuditable
public List<T> getAll(HttpServletResponse response);
@WebAuditable
public T getByName(HttpServletResponse response, String id);
@WebAuditable
public T create(HttpServletResponse response, T t);
@WebAuditable
public T update(HttpServletResponse response, T t);
}
Аннотированиебазовый класс не будет работать, потому что прокси-серверы JDK не предоставляют никакой информации, которая не поддерживается интерфейсами.