..


Рекламные ссылки

AOP - прокси

Прежде чем перейти, чтобы увидеть, как вы создаете с их аспект pointcuts и советы, очень важно понять, как прокси-серверы.
Прокси это не более чем оболочка (контейнер), который содержит объект и предоставляет доступ ко всем общественным объектом medodi. Когда вы вызываете метод прокси фактической реализации метода делегированы объект Wrap, что делает наличие прокси полностью прозрачна для пользователя.
Прокси-сервер использует Spring AOP для реализации, чем простые методы делегат также имеют дело с различными рекомендации по управлению.

Мы понимаем, насколько это прокси реализовать один очень простой. Сначала мы создаем простой интерфейс:






 {Открытый интерфейс SimpleInterface



	

  



 общественных f1 недействительными ();



	

  



 общественного недействительными f2 ();







 }



мы создаем даже простая реализация:





 SimplePojo {общественных класс реализует SimpleInterface





  



 @ Override



  



 общественных f1 недействительными () {



    



 System.out.println ("F1");



    



 f2 ();



  



 }





  



 @ Override



  



 общественного недействительными f2 () {



    



 System.out.println ("F2");



  



 }







 }



Отметим, что метод f1 () делает вызов к f2 ().
Давайте теперь создадим прокси-сервер, как уже было сказано, мы должны создать контейнер объекта и раскрыть все его методы, то прокси будет реализовывать интерфейс, а затем делегировать SimpleInterface все вызовы методов на реальном объекте:






 SimpleProxy {общественных класс реализует SimpleInterface





  



 Частные SimpleInterface делегирован;





  



 общественных SimpleProxy (SimpleInterface делегата) {



    



 супер ();



    



 this.delegate = делегата;



  



 }





  



 @ Override



  



 общественных f1 недействительными () {



    



 System.out.println ("Делегирование F1 ()");



    



 delegate.f1 ();



  



 }





  



 @ Override



  



 общественного недействительными f2 () {



    



 System.out.println ("Делегирование F2 ()");



    



 delegate.f2 ();



  



 }







 }



В нашем простом примере, прокси-сервер делает печати сообщение, которое говорит, что это делегирование вызова.

Мы создаем сейчас основной тест, чтобы увидеть, как наш прокси:






 общественного класса Главная {





  



 государственной статической силы основных (String [] агдз) {



    



 / / Создание экземпляра компонента

 

    



 SimpleInterface realBean SimplePojo = новый ();





    



 System.out.println ("##### боб #####");



    



 realBean.f1 ();



    



 System.out.println ();



    



 realBean.f2 ();





    



 System.out.println ();





    



 / / Создаем экземпляр прокси



    



 SimpleInterface SimpleProxy прокси = новой (новой SimplePojo ());





    



 System.out.println ("##### прокси #####");



    



 proxy.f1 ();



    



 System.out.println ();



    



 proxy.f2 ();



  



 }







 }



Первый блок кода дает следующие результаты:





 ##### Бин #####







 F1







 F2









 F2



Теперь можно ожидать, что выход второго блока выглядит следующим образом:





 ##### ##### Прокси







 Делегирование F1 ()







 F1







 Делегирование F2 ()







 F2









 Делегирование F2 ()







 F2



Invce нет! Вывод будет следующим:





 ##### ##### Прокси







 Делегирование F1 ()







 F1







 F2









 Делегирование F2 ()







 F2



Как мы видим, что вызов метода f1 () является методом f2 () не проходит через прокси-сервер, потому что как только вы делегировали выполнение метода к реальным объектом все внутренние звонки не будет перехвачена по доверенности.
По этой причине вы не можете создать совет по методам, которые вызываются из других методов объекта, или, скорее, может быть создана, только если эти методы используются внешние объекты, поскольку в противном случае совет не выполняется.
Proxy

Весна Java Руководство
E-Learning
Linux (курс) Linux (курс)
Полное руководство по открытым исходным кодом системы. От 49 €.
PHP (курс) PHP (курс)
Полный курс для создания динамических веб-сайтов. От 49 €.
Руби и Ruby On Rails (курс) Руби и Ruby On Rails (курс)
Создание программного обеспечения и веб-приложений с Рубином и RoR. С 39 €.
Рекламные ссылки