Все ли методы проксируются при использовании Spring AOP? - PullRequest
4 голосов
/ 19 февраля 2010

При использовании Spring AOP для создания прокси для класса с использованием NameMatchMethodPointcutAdvisor и BeanNameAutoProxyCreator делает это по существу прокси для каждого вызова объекта, но применяет совет только к соответствующим методамили как-то создать объект Proxied, который имеет только эти методы и использует обычный объект для вызовов, которые должны быть перехвачены?

Мне кажется, я понимаю, что он делает прокси-сервер при каждом вызове объекта, но затем вызывает Советник только для методов, которые соответствуют - но я не могу найти хороший пример / сообщение, чтобы подтвердить это..

Ответы [ 2 ]

6 голосов
/ 19 февраля 2010

Зависит от используемой техники.(Это настраивается с помощью атрибута proxy-target-class в вашей конфигурации aop)

  • Динамические прокси JDK являются прокси интерфейсом - каждый метод интерфейса проходит через прокси, как вы сказали, иесли он совпадает с методом «посоветовал», применяется советник.В противном случае он делегируется исходному объекту

  • Прокси-серверы CGLIB фактически являются подклассами, определенными во время выполнения ваших конкретных классов.Я не могу быть уверен в этом, но я предполагаю, что только «рекомендованные» методы переопределены, остальные сохраняют определение суперкласса.

Однако, какой бы механизм не использовался:

0 голосов
/ 19 февраля 2010

или как-то создать объект Proxied, который имеет только эти методы и использует обычный объект для вызовов, которые должны быть перехвачены?

Как это на самом деле будет работать?Когда класс имеет ссылку на проксируемый класс, он имеет только одну ссылку на него.Он либо должен вызывать прокси-класс или непроксифицированный класс.Spring не может знать, какие методы вы вызываете, и поэтому не может дать вам один тип, если вам нужно вызвать метод advised, и другой тип, если это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...