|
|
|
Spring AOP получить в аспекте доступ по имени параметра
|
|||
|---|---|---|---|
|
#18+
Как реализовать в аспекте доступ к параметру по имени параметра, которое можно получить из аннотации. Т.е. хочется реализовать функциональность доступную в SPEL, когда можно обращаться к параметру через "#имяпараметра". Например, Код: java 1. 2. 3. 4. Элементы массивов CodeSignature.getParameterNames() и JoinPoint.getArgs() упорядочены по порядку следования аргументов в сигнатуре метода? У меня не было возможности проверить такое решение, другого пока не могу найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2013, 11:12:47 |
|
||
|
Spring AOP получить в аспекте доступ по имени параметра
|
|||
|---|---|---|---|
|
#18+
rdm, Повесьте аннотацию непосредственно на параметры. Например, так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2013, 15:51:16 |
|
||
|
Spring AOP получить в аспекте доступ по имени параметра
|
|||
|---|---|---|---|
|
#18+
WGA, Этот вариант мне не подходит( Я могу в аспекте получить значение аннотации, которое соответствует названию параметра. Но вот как получить сам параметр в аспекте по его имени пока не могу понять. Вызов Signature.getParameterNames() у меня возвращает null. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2013, 18:52:18 |
|
||
|
Spring AOP получить в аспекте доступ по имени параметра
|
|||
|---|---|---|---|
|
#18+
rdmWGA, Этот вариант мне не подходит( Я могу в аспекте получить значение аннотации, которое соответствует названию параметра. Но вот как получить сам параметр в аспекте по его имени пока не могу понять. Вызов Signature.getParameterNames() у меня возвращает null.А AspectJ - это круто :-) Не использовал раньше, а сейчас так вообще JavaEE-интерцепторы в ходу - там имя параметра вообще не вытащить, а AspectJ умеет. Накидал минимальный пример со Spring + AspectJ. Посмотрите, сравните со своим кодом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 10:57:25 |
|
||
|
Spring AOP получить в аспекте доступ по имени параметра
|
|||
|---|---|---|---|
|
#18+
WGA, ваш пример полностью работает. Не могу понять почему у меня String[] parameterNames = signature.getParameterNames() возвращает null. В документации сказано, что при компиляции надо установить уровень debuglevel = vars и debug=on, но в вашем примере в pom.xml ничего такого не обнаружил, при этом пример работает. Что-то я не так делаю, но не могу найти что именно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 15:11:32 |
|
||
|
Spring AOP получить в аспекте доступ по имени параметра
|
|||
|---|---|---|---|
|
#18+
Дело в том, что в вашем примере вы получаете ссылку на класс, а не на интерфейс. Из-за этого используется не JDKDinamicProxy, а CGlib. Если чуть изменить ваш пример Код: java 1. 2. 3. 4. получается та же ошибка что и у меня, метод signature.getParameterNames() возвращает null. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 15:24:51 |
|
||
|
Spring AOP получить в аспекте доступ по имени параметра
|
|||
|---|---|---|---|
|
#18+
Может вы знаете, как получать ссылку на интерфейс, использовать dinamicProxy и чтобы это работало? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 15:27:36 |
|
||
|
Spring AOP получить в аспекте доступ по имени параметра
|
|||
|---|---|---|---|
|
#18+
Я чуть переделал ваш пример, вот: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 15:28:25 |
|
||
|
Spring AOP получить в аспекте доступ по имени параметра
|
|||
|---|---|---|---|
|
#18+
rdm, Да, с интерфейсами ситуация другая. Что-то похожее мне нагуглилось в первых двух ссылках. Кстати, Вы не обращали внимание, что разные IDE, когда создают реализацию стандартных интерфейсов (например, HttpServlet), для параметров методов используют разные идентификаторы? ;) Похоже, они их сами "выдумывают"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 19:21:27 |
|
||
|
Spring AOP получить в аспекте доступ по имени параметра
|
|||
|---|---|---|---|
|
#18+
WGA, Гугл же разные результаты выдает для разных пользователей) У меня проблема усугубилась, теперь даже JoinPoint.getArgs() всегда null возвращает ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 19:27:04 |
|
||
|
Spring AOP получить в аспекте доступ по имени параметра
|
|||
|---|---|---|---|
|
#18+
rdmWGA, Гугл же разные результаты выдает для разных пользователей) У меня проблема усугубилась, теперь даже JoinPoint.getArgs() всегда null возвращает (Но не у двух джавистов жеж ) Я про эти ссылки: тынц1 и тынц2 . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 19:59:30 |
|
||
|
Spring AOP получить в аспекте доступ по имени параметра
|
|||
|---|---|---|---|
|
#18+
WGA, я пробовал, у меня не заработало ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 21:04:49 |
|
||
|
Spring AOP получить в аспекте доступ по имени параметра
|
|||
|---|---|---|---|
|
#18+
rdmWGA, я пробовал, у меня не заработалоЕсли я правильно понял, то и не заработает. Какие-то особенности JVM, из-за которых для интерфейсов не сохраняется инфа об именах параметров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 21:22:28 |
|
||
|
Spring AOP получить в аспекте доступ по имени параметра
|
|||
|---|---|---|---|
|
#18+
WGA, решение в любом случае есть. Очень много аннотации Spring используют имена параметров в SPEL. Например Spring Security позволяет обращаться к параметрам по имени #имяпараметра. Причем все это работает на реализации интерфейса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 22:12:51 |
|
||
|
Spring AOP получить в аспекте доступ по имени параметра
|
|||
|---|---|---|---|
|
#18+
rdmWGA, решение в любом случае есть. Очень много аннотации Spring используют имена параметров в SPEL. Например Spring Security позволяет обращаться к параметрам по имени #имяпараметра. Причем все это работает на реализации интерфейса.Тогда Вы знаете больше меня. Но зачем столько усилий? Возможно есть другой способ сделать или workaround какой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 22:30:42 |
|
||
|
Spring AOP получить в аспекте доступ по имени параметра
|
|||
|---|---|---|---|
|
#18+
WGA, это удобно и наглядно. Пока я использую просто порядковый номер в аннотации int key = 0,1,2... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2013, 22:55:10 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38381610&tid=2128683]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 303ms |
| total: | 439ms |

| 0 / 0 |
