간단한 응용 프로그램 - AOP의 (2 개)에

전희 " AOP의에 (A) -의 기본 개념" 준비가 사전에 이해.

Benpian는 어떤 AOP를 분석 할 수 있습니다.

SpringAOP 기본 기술

JDK 동적 프록시와 동적 프록시 CGLIB

두 런타임 짜기에 있습니다.

JDK 동적 프록시는 통합 인터페이스를 기반으로 자바 단일 상속이므로, 프록시 객체는 인터페이스는 대상의 목적을 달성 할 수 있도록, 더 상속 할 수없는 프록시를 계승. 먼저 객체 ProxyClassFactory의 인스턴스 사이의 프록시 클래스에서 다음 프록시 클래스의 생성을 완료, get 메소드의 방법을 적용 호출합니다.

CGLIB 동적 프록시 그것은 매우 하단 CGLIB 바이트 코드 기술, 클래스, 서브 클래스 및 서브 클래스의 모든 상위 클래스에있어서 가로 채기 메소드 호출 차단 기술 및 인터셉트 각 로컬 직포와 기반 상속 크로스 커팅 로직.

스프링 AOP 응용 프로그램

서라운드 통지의 경우 :

 

조언 주위 :
 

ProceedingJoinPoint는 joinpoint를 클래스를 향상, Proceedingjoinpoint는 joinpoint를 상속, joinpoint를 확대.

반사되지 메소드를 호출하지 joinpoint를; ProceedingJoinPoint 클래스는 () 파라미터들이 또한 변경 될 수있다 () 메소드를 진행하고, 진행하는 것이 필요하다.

테스트 코드 :

DAO :


 
시험 종류 :

 

입력 매개 변수 변경.

실제 응용 환경에서, 일반적으로 단일 섹션 실시.

AspectJ를 지원


 

AspectJ의 매우 중요한 포인트를 지원!

이 질문을 제기한다 :

AOP와 AspectJ를하고 SpringAOP의 관계는 무엇인가?

AOP는 프로그래밍 생각하지만 SpringAOP는 AOP의 구현입니다! AspectJ의 AOP가 달성 보스 AOP 할 수 있습니다.

왜 SpringAOP AspectJ를 사용 하는가?

AOP 구문,하지만 매우 복잡한의 Spring2.0 자신의 세트에서, 외부 세계는 허용하지 않습니다.

그래서 후속 스프링의 AspectJ 구문 도움말 바로 AspectJ의 구문, 또는 기본 봄 기본 기술을 도움이됩니다.

요약 :

Spring AOP在底层就是利用JDK动态代理或CGLib动态代理技术为目标Bean织入横切逻辑。

CGLIB是通过继承来操作子类的字节码生成代理类,JDK是通过接口,然后利用java反射完成对类的动态创建,严格意义上来说CGLIB的效率高于JDK的反射,但是这种效率取决于代码功力,其实可以忽略不计,毕竟JDK是JVM的亲儿子。

AOP深入内容非常多,博主暂时只能浅析到这里,后续继续进行学习记录总结。

参考资料:

Spring学习之Spring AOP的底层实现技术 -- 动态代理


本人才疏学浅,以上纯属个人理解,如有不对,还望批评指正。

추천

출처www.cnblogs.com/vince-zww/p/11504175.html