Можем ли мы войти внутрь метода, используя АОП?

Я хочу регистрировать некоторые операторы в моем методе, используя АОП.

Я могу определить точки, рекомендации по запуску, завершению метода, сценариям исключений.

Можем ли мы войти между методом в какой-то момент (после ввода метода и до завершения выполнения?) Я использую Spring 3.0.


person java_enthu    schedule 28.10.2011    source источник
comment
возможный дубликат Spring: стандартный аспект ведения журнала (перехватчик)   -  person Tomasz Nurkiewicz    schedule 28.10.2011
comment
@Tomasz Nurkiewicz: это не дубликат этого вопроса, потому что проблема заключается в том, как разместить некоторый оператор журнала в середине метода. Эта тема не обсуждается в другом вопросе.   -  person Ralph    schedule 28.10.2011
comment
@java_enthu: Прошу прощения, я неправильно понял ваш вопрос. К сожалению, я не могу отменить свое близкое голосование, но у вас есть мой +1 и ответ :-).   -  person Tomasz Nurkiewicz    schedule 28.10.2011


Ответы (1)


Нет, это невозможно. Spring не может «заглянуть» в ваши методы и изменить их. Технически сплетение AspectJ может сделать это, но я бы держался подальше от таких подходов.

Что вы можете сделать, так это извлечь методы, которые не только позволят вам обеспечить более детальное ведение журнала, но также улучшите общее качество кода. Однако обратите внимание, что по умолчанию Spring может перехватывать только общедоступные (прокси) и защищенные методы (CGLIB).

person Tomasz Nurkiewicz    schedule 28.10.2011
comment
О, с версиями Spring 3.x тоже нельзя? - person java_enthu; 28.10.2011
comment
Насколько я знаю, нет. Опять же, сам Spring не трогает ваши методы, а только перехватывает вызовы. С настоящим плетением AspectJ вы можете перехватывать доступ к переменным и закрытым методам. - person Tomasz Nurkiewicz; 28.10.2011
comment
Почему минус? Если мой ответ неверен, пожалуйста, дайте лучший, и я скромно удалю этот :-). - person Tomasz Nurkiewicz; 28.10.2011
comment
@Thomas: в любом случае, можем ли мы смешивать плетение AspectJ с Spring AOP? и кстати: я не минусовал!! - person java_enthu; 28.10.2011
comment
Конечно, вы можете использовать Aspectj LTW или CTW со Spring, например, AspectJ может внедрить поддержку транзакций в ваши классы. Вы найдете множество ресурсов в Интернете, я также планирую опубликовать кое-что об этом сегодня. - person Tomasz Nurkiewicz; 28.10.2011
comment
Вот. - person Tomasz Nurkiewicz; 31.10.2011