powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Хочу сам ловить вызов метода в стандартной яве. как?
17 сообщений из 17, страница 1 из 1
Хочу сам ловить вызов метода в стандартной яве. как?
    #39580450
Фотография BlackGnomeГуест
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу получать от объекта события до и после вызова метода и про сам метод, используя свою аннотацию

это реально?
...
Рейтинг: 0 / 0
Хочу сам ловить вызов метода в стандартной яве. как?
    #39580451
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spring aop или aspectj. или трушные прокси и рефлексия.
...
Рейтинг: 0 / 0
Хочу сам ловить вызов метода в стандартной яве. как?
    #39580460
Фотография BlackGnomeГуест
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTspring aop или aspectj. или трушные прокси и рефлексия.


вот оно,да, вижу :

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
	Person person = new Person();
     
    	IPerson personproxy = (IPerson) Proxy.newProxyInstance(Person.class.getClassLoader(), 
    							   Person.class.getInterfaces(),
    							   new NeverSleepingEye(person));
     
    	personproxy.setName("Гриша");
    	String h  = personproxy.getName() ;
    	personproxy.rename("Вася");



Получается , что на входе надо иметь и класс (экземпляр) и интерфейс. Но это не согласуется с концепцией
простого объекта. Я не могу просто присобачить свою аннотацию к методу, мне нужно еще описать интерфейс :(
...
Рейтинг: 0 / 0
Хочу сам ловить вызов метода в стандартной яве. как?
    #39580469
Фотография BlackGnomeГуест
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackGnomeГуест,

cglib ?
...
Рейтинг: 0 / 0
Хочу сам ловить вызов метода в стандартной яве. как?
    #39580476
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackGnomeГуестBlackGnomeГуест,

cglib ?
cglib это инструмент модификации кода. А вам нужна полноценная AOP библиотека. Написали же выше: AspectJ.
Оно, правда, не вписывается в требования "используя свою аннотацию". Почему именно свою?
...
Рейтинг: 0 / 0
Хочу сам ловить вызов метода в стандартной яве. как?
    #39580517
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczcglib это инструмент модификации кода.

http://cglib.sourceforge.net/apidocs/net/sf/cglib/proxy/Enhancer.html Generates dynamic subclasses to enable method interception. This class started as a substitute for the standard Dynamic Proxy support included with JDK 1.3, but one that allowed the proxies to extend a concrete base class, in addition to implementing interfaces. The dynamically generated subclasses override the non-final methods of the superclass and have hooks which callback to user-defined interceptor implementations.
...
Рейтинг: 0 / 0
Хочу сам ловить вызов метода в стандартной яве. как?
    #39580529
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,

И чо? То что CGLIB (вот открытие-то!) умеет генерировать прокси никак не отменяет того факта что для решения задач AOP проще использовать AOP решения, а не решения для инструментации (cglib, asm). Инструментацию можно вообще на чистом JSE забабахать без всяких CGLIB. Вопрос только в том зачем прикладывать столько усилий, если есть готовые аннотации?
...
Рейтинг: 0 / 0
Хочу сам ловить вызов метода в стандартной яве. как?
    #39580534
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczBlackGnomeГуестBlackGnomeГуест,

cglib ?
cglib это инструмент модификации кода. А вам нужна полноценная AOP библиотека. Написали же выше: AspectJ.
Оно, правда, не вписывается в требования "используя свою аннотацию". Почему именно свою?
как раз таки у аспектджея это и есть. можно создать сураунд и в маске указать что ловить все методы что аннотированы некоторой (в данном случае самодельной) аннотацией.
и этот сураунд будет срабатывать каждый раз когда вызывается метод ))) вродь как раз то что тсу и нужно.

типа такого:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
    @Pointcut("@annotation(/*Annotation class*/) || @annotation(org.springframework./*one more annotation class from spring lib*/)")
    public void businessMethods() {
    }


    @Around("businessMethods()")
    public Object profile(ProceedingJoinPoint pjp) {
        /*SomeClass from pointcut*/ genericEvent = (/*cast to class*/) pjp.getArgs()[0];
    
        try {
           pjp.proceed();
                //activity blahblah
            
           return null;

        } catch (Throwable throwable) {
            throwable.printStackTrace();
      //activity blahblah
            return null;
        }


    }



типа такого.
...
Рейтинг: 0 / 0
Хочу сам ловить вызов метода в стандартной яве. как?
    #39580539
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

вы как-то определитесь что вы донести хотите, а то дискуссия получается несколько странная:

BlackGnomeГуест: чет JDK proxies не вкатили - хочу то же самое, но без интерфейсов, CGLIB прокатит?

Blazkowicz: cglib это инструмент модификации кода. А вам нужна полноценная AOP библиотека. Написали же выше: AspectJ.

как будто AspectJ байт-код не модифицирует (а потом еще лулзы нужно ловить при интеграции с IDE и всякими hot swap в дебагере). Есть еще javassist.util.proxy.ProxyFactory если CGLIB не понравится
...
Рейтинг: 0 / 0
Хочу сам ловить вызов метода в стандартной яве. как?
    #39580541
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфиловвы как-то определитесь что вы донести хотите
Вы так-то с цитирование определитесь. Указывайте автора вопроса, если вы ему информацию какую-то собрались донести. Мне открывать глаза на CGLIB не стоит. У меня с ним вопросов не возникает.
https://github.com/neoremind/dynamic-proxy
...
Рейтинг: 0 / 0
Хочу сам ловить вызов метода в стандартной яве. как?
    #39580750
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackGnomeГуестэто реально? Все уже украдено до нас ©
...
Рейтинг: 0 / 0
Хочу сам ловить вызов метода в стандартной яве. как?
    #39580769
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бугаенко?
...
Рейтинг: 0 / 0
Хочу сам ловить вызов метода в стандартной яве. как?
    #39580803
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonБугаенко?он самый
...
Рейтинг: 0 / 0
Хочу сам ловить вызов метода в стандартной яве. как?
    #39580874
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто ето?
...
Рейтинг: 0 / 0
Хочу сам ловить вызов метода в стандартной яве. как?
    #39580879
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTКто ето?
Java Блогер. Поначалу за объекты топил прям радикально. Так что я удивлён что у него нашлись статьи про ООП.
Направление мысли у него верное, но выводы, зачастую, очень спорные.
Его на конференции стали приглашать последние несколько лет. Но те доклады что я у него смотрел очень поверхностные и ни о чем. При том что сама тема была поднята важная и правильная. Но глубина раскрытия темы "по щиколотку".
...
Рейтинг: 0 / 0
Хочу сам ловить вызов метода в стандартной яве. как?
    #39580882
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczТак что я удивлён что у него нашлись статьи про ООП АОП.
...
Рейтинг: 0 / 0
Хочу сам ловить вызов метода в стандартной яве. как?
    #39582924
Фотография BlackGnomeГуест
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Всем привет снова :)

А это нормально, что javassist не видит default method.

Обёрнутый класс при попытке вызова такого метода null выдёт :(

ps

Оба разрешения в JVM уже прописал... это у меня уже вторая серия проблем пошла
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Хочу сам ловить вызов метода в стандартной яве. как?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]