2015-09-15 2 views
2

У меня довольно большое корпоративное приложение, и я планирую написать метод перехватчика, который работает во всех классах приложения. Я знаю, что могу использовать Guice для написания таких перехватчиков, однако этот подход работает только в том случае, если целевой объект, содержащий метод для перехвата, создается Guice (reference).Применение перехватчиков широкого метода в Java

Есть ли способ, которым я могу создать такой перехватчик? Я не хочу вводить модуль перехватчика, так как я не могу контролировать создание объекта через injector.getInstance() на сайте.

Btw, приложение построено на Play! Фреймворк.

+0

Если вы не можете контролировать экземпляра вы, возможно, придется использовать уродливые (?) Вещи, как http://stackoverflow.com/questions/10659610/how-to-instrument-java-methods – zapl

+0

Я недостаточно осведомлен, чтобы предоставить полный ответ на это, но вы можете найти полезную информацию прокси. http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Proxy.html –

ответ

1

Вам нужно AspectJ https://eclipse.org/aspectj/

Взятые с домашней страницы проекта:

«AspectJ позволяет чистой модуляризацию многоплановых проблем, таких как проверка на наличие ошибок и обработки, синхронизации, контекстно-зависимая поведения, оптимизации производительности , мониторинг и протоколирование, отладка поддержки и мульти-объектный протоколы»

EDIT: Вы также можете посмотреть на ява агентов, введенных в JDK 5:

http://javahowto.blogspot.com.cy/2006/07/javaagent-option.html

http://www.javabeat.net/introduction-to-java-agents/

Смежные вопросы