Я только начал читать о Spring, и в одной книге упоминается "Spring AOP - это фреймворк, основанный на прокси". Что подразумевается под "Proxy based" фреймворком.
Фреймворк использует java.lang.reflect.Proxy
для выполнения работы
В общем случае аспектно-ориентированное программирование (АОП) в Java реализуется с помощью инструментария целевых объектов. Существует много способов сделать это, но общим подходом является использование класса Proxy
.
Это позволяет создать новый объект во время выполнения на основе заданного интерфейса. Затем вы можете настроить поведение прокси, чтобы включить дополнительные функции, такие как ведение журнала или код безопасности, перед передачей управления исходному объекту.
Альтернативным подходом является использование подклассификации. Прокси расширяет исходный класс и создает аспект перед передачей обратно суперклассу. Это не сработает, если ваш класс имеет конечные методы, которые нуждаются в проксировании.
Вы можете прочитать больше об этом в справке по Java здесь: http://download.oracle.com/javase/6/docs/api/java/lang/reflect/Proxy.html .
Также посмотрите Spring в действии (стр. 124).
Как говорит Гэри Роу: некоторые реализации Аспектно-ориентированного программирования обычно полагаются на введение прослойки между объектом и остальной частью системы. Этот слой обычно называется прокси или динамическим прокси.
С сайта Castle Project:
Прокси-объекты могут помочь в построении гибкой архитектуры приложения, поскольку они позволяют прозрачно добавлять функциональность в код, не изменяя его. Например, класс может быть проксирован для добавления протоколирования или проверки безопасности без того, чтобы код знал, что эта функциональность была добавлена.