Можно ли написать 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;
}
Хотя это не эквивалентно использованию аспекта, вы можете получить аналогичную функциональность с перехватчиками и довольно минимальной конфигурацией.