Альтернатива AspectJ

102
30 сентября 2019, 14:30

Всем привет. Копаюсь сейчас в AspectJ, которая привлекает возможностью применять дополнительную логику через аннотирование. Например, мы можем логировать запросы таким образом:

Аннотация:

@ApiLogResponse(httpMethod = HttpMethod.POST, path = "/planet")
@PostMapping
public ResponseEntity<PlanetDto> save(@RequestBody PlanetDto dto) {
    return ResponseEntity.ok(service.save(dto));
}

И сам процессор:

@AfterReturning(value = "@annotation(after)", returning = "responseEntity")
public void after(ResponseEntity responseEntity, ApiLogResponse after) throws JsonProcessingException {
    service.save(ApiLog.of(
            TransferType.RESPONSE.name(),
            after.httpMethod().name(),
            after.path(),
            new ObjectMapper().writeValueAsString(responseEntity)
    ));
}

То есть, если с применением простых аннотаций мы обычно сетим значения в методы, то тут, наоборот, работаем с параметрами метода в аннотации. В данном примере, мы логируем в базу приходящий запрос.

На англоязычной версии stackoverflow какой-то посетитель сказал мне, что AspectJ устарел и ей никто не пользуется.

В связи с этим, у меня два вопроса:

  1. Действительно ли, AspectJ безнадёжно устарел, и на него не стоит тратить время?
  2. Есть ли альтернативы AspectJ, позволяющие легко работать с параметрами / возвращаемыми значениями метода? Желательно с примерами и ссылками, пожалуйста.
READ ALSO
Как отправить к REST сервису запрос с InputStream и периодически записывать в него данные

Как отправить к REST сервису запрос с InputStream и периодически записывать в него данные

Есть задача: Нужно создать клиент и REST web-сервис на java

120
Как остановить SQL запрос

Как остановить SQL запрос

Я делаю запрос в базу данных "SELECT * FROM USER_FM WHERE PHONE = ? OR EMAIL = ?"База данных ORACLE

115