Чем proxy через BeanPostProcessor отличается от AOP?

222
10 февраля 2020, 05:30

Не могу понять, чем прокси класс который создается, когда я в BeanPostProcessor добавляю какую-нибудь логику после инит метода отличается от того прокси который создается когда добавляю логику через Spring AOP. Я так понимаю что и там и там используется либо Dynamic Proxy либо CGlib?

Answer 1

Концептуально BeanPostProcessor - это дополнительная обработка при создании объекта -т.е. он вызывается для одного объекта 1 раз (ну по факту 2 раза - до и после инит метода), а АОП - это дополнительная логика уже в работающем объекте - и вызывается она столько раз сколько нужно. Отсюда все различия. Внутри proxy может не сильно отличаться. Но обернуть большое количество методов/объектов намного легче через аоп - кода будет в разы меньше. Но зато когда надо полностью изменить объект - то лучше использовать первый вариант с BeanPostProcessor - так как оборачивать ничего не надо - и легче с нуля создать класс

READ ALSO
Не компилируется JavaFX приложение

Не компилируется JavaFX приложение

Импортировал библиотеку, но приложение не компилируетсяКод исходный, я ничего не менял

169
Junit Spy Mockito Тестирование

Junit Spy Mockito Тестирование

Всем привет,учу java, есть задание протестировать с помощью Mockitospy void метод который вызывает другие методы

212
Хеш Java Bouncy Castle

Хеш Java Bouncy Castle

Подскажите, пожалуйста, как из указанного byte[] получить хеш по ГОСТ Р 3411-94

202
Не работает await nodejs

Не работает await nodejs

Имеются две функции:

244