170 похожих чатов

Всем привет, я через AOP могу получить аргументы метода контроллера

joinPoint.getArgs. Но могу ли я наоборот установить аргумент? Например я хочу чтобы в аргументе не было явно написано HttpServletRequest httpServletRequest, ведь мы далеко не всегда его используем в методе. Но хотелось бы логировать каждый метод и получать его тип запросa. Может можно сделать такую аннотацию, которая инжектит неявно аргумент в метод

34 ответов

14 просмотров

https://stackoverflow.com/a/4312242/6277184

Javist- Автор вопроса
Peter P.
https://stackoverflow.com/a/4312242/6277184

java.lang.IllegalArgumentException: Expecting 0 arguments to proceed, but was passed 1 arguments https://pastebin.com/86FzfXrx

Кто-то переизобретает имплиситы из скалы, я смотрю

Javist- Автор вопроса
Denis Chikanov
Кто-то переизобретает имплиситы из скалы, я смотрю

да не в скале имплиситы это ж фича языка, а тут хочется вытащить из @RequestMapping метода HttpServletRequest, не добавляя его в параметр каждого контроллерного метода)

Javist
да не в скале имплиситы это ж фича языка, а тут хо...

Ну не добввляй если не юзаешь в чем трабл

Javist- Автор вопроса
Islam Yusubov
Ну не добввляй если не юзаешь в чем трабл

так я делаю аспект, который читает из request'ов инфу и логирует

Javist
так я делаю аспект, который читает из request'ов и...

Чтобы читать что-то из аргументов метода, это что-то должно быть аргументом метода Если ты хочешь на лету менять то, какой метод на самом деле вызывается, ты абьюзишь аспекты там, где не надо

Javist- Автор вопроса
Javist
мб и так, пошел куда-то не туда видимо хД

Тебе какие-нибудь интерсепторы нужны, а не аспекты

Javist- Автор вопроса
Javist
да не в скале имплиситы это ж фича языка, а тут хо...

тебе не надо делать параметры, тебе надо заинжектить HttpServletRequest в сам аспект.

Dmitriy Zanin
тебе не надо делать параметры, тебе надо заинжекти...

@Component @Aspect @RequiredArgsConstructor public class AspectTest { private final HttpServletRequest httpServletRequest; @Before("@annotation(ru.TestAspect)") public void proceed() { System.out.println(httpServletRequest.getRequestURI()); } }

Javist- Автор вопроса
Dmitriy Zanin
@Component @Aspect @RequiredArgsConstructor public...

Тоесть по идее в анотированный метод будет заинжекчен реквест? Немного запутался

Javist
Тоесть по идее в анотированный метод будет заинжек...

ты ставишь аннотацию своего аспекта над методом в RestController классе. описываешь аспект примерно как я описал выше, только со своими потребностями и инжектишь в класс обработки аспекта HttpServletRequest. Только не вздумай маркировать своей аннотацей методы, которые не имеют http конеткста

Javist- Автор вопроса
Dmitriy Zanin
ты ставишь аннотацию своего аспекта над методом в ...

Да , как делать то я понимаю, не очень понимаю как этот реквест попадет в контроллер метод) выглядит будто он останется просто в аспект бине )

Javist
Да , как делать то я понимаю, не очень понимаю как...

я видимо не понимаю чего ты хочешь 🙂 зачем тебе его в контроллер метод?

Javist- Автор вопроса
Javist
Чтобы залогировать инфу о нем)

очень абсратное требование конечно. Ты хочешь прямо в контроллере описывать логику логирования? Или ты для этого создал аспект и в нем логируешь?

Javist- Автор вопроса
Dmitriy Zanin
очень абсратное требование конечно. Ты хочешь прям...

Да для него) анноташка, которая будет логировать методы

Dmitriy Zanin
очень абсратное требование конечно. Ты хочешь прям...

Он создал аспект, где хочет логировать хттпреквест, но не хочет, чтобы в методах, с которыми будет работать этот аспект, этот иеквест был параметром

Denis Chikanov
Он создал аспект, где хочет логировать хттпреквест...

ты сменил аватар, я тебя не узнал 🙂 дак я же вроде проедложил нормальное решение?

Dmitriy Zanin
ты сменил аватар, я тебя не узнал 🙂 дак я же вроде...

Логика подсказывает, что реквестов много разных, а поле реквеста у тебя private final - каждый раз экземпляр создавать на новый реквест (и допрет ли спринг до такого?), получается?

Denis Chikanov
Логика подсказывает, что реквестов много разных, а...

да, спринг туда каждый раз подставляет конкретный текущий реквест

Denis Chikanov
Кто-то переизобретает имплиситы из скалы, я смотрю

Разве имплиситы - не сингтоны на этапе компиляции? H...Request впротивовес имеет жизненный цикл запроса

Javist
Последовательно?

какой вызывается, тот и заинжектится. это же синхронный вызов

Javist
Последовательно?

Ты точно понимаешь, что из себя аспекты представляют?

Denis Chikanov
И новый экземпляр аспекта каждый раз?

/api/test api/test1 дернул две апи, маркированные аспект аннотацией - результат разный. Да, на каждый вызов свой инжект. К слову, когда мы ставим параметром хттпРеквест в методе контроллера, он туда тоже инжектится же? или не?

Javist- Автор вопроса
Javist- Автор вопроса
Denis Chikanov
Ты точно понимаешь, что из себя аспекты представля...

Ну не знаю, что ты имеешь ввиду «представляет»?)

Dmitriy Zanin
/api/test api/test1 дернул две апи, маркированные ...

Я не знаю, как у спринга веб-составляющая под капотом устроена, но я бы сказал "просто подставляется как аргумент", DI тут вроде не при делах, по крайней мере, не обязан участвовать.

Denis Chikanov
Логика подсказывает, что реквестов много разных, а...

Объект реквеста это бин в request scope, инжектится прокси, внутри будет текущий запрос из контекста

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
как быть с принтером? такой подход прокатит?
zamtmn
12
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Карта сайта