Можно ли написать AOP для класса Spring RestTemplate и любых внешних jar-классов, используя Spring AOP или Aspectj

Можно ли написать AOP для класса Spring RestTemplate, используя Spring AOP или Aspectj. EX:

@Around("execution(* org.springframework.web.client.RestTemplate.getFor*(..))")  

Спасибо

1 ответ

У меня была та же проблема, и я не мог заставить ее работать с АОП.

Однако в этом случае есть обходной путь. поскольку RestTemplate продолжается InterceptingHttpAccessor, вы можете перехватить все запросы, поступающие черезRestTemplate объект.

Пример конфигурации, которая регистрирует все HTTP-запросы:

@Bean
public RestTemplate restTemplate() {

    RestTemplate restTemplate = new RestTemplate();

    // (...)
    // setup code for the RestTemplate object

    restTemplate.getInterceptors().add((request, body, execution) -> {
        logger.info("HTTP {} request to {}", request.getMethod(), request.getURI());
        return execution.execute(request, body);
    });

    return restTemplate;
}

Хотя это не эквивалентно использованию аспекта, вы можете получить аналогичную функциональность с перехватчиками и довольно минимальной конфигурацией.

Другие вопросы по тегам