當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
利用CGLib实现动态代理实现Spring的AOP
生活随笔
收集整理的這篇文章主要介紹了
利用CGLib实现动态代理实现Spring的AOP
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
當我們用Proxy 實現Spring的AOP的時候, 我們的代理類必須實現了委托類的接口才能實現。 而如果代理類沒有實現委托類的接口怎么辦? 那么我們就可以通過CGLib來實現
?
package cn.gbx.aop;import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy;import cn.gbx.service.impl.PersonService;public class ProxyFactory implements InvocationHandler{private Object targetObject;public Object createProxyInstance(Object targetObject) {this.targetObject = targetObject;return Proxy.newProxyInstance(this.targetObject.getClass().getClassLoader(),this.targetObject.getClass().getInterfaces(), this);}@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {PersonService service = (PersonService) this.targetObject;Object result = null;if (service.getUser() != null) {result = method.invoke(this.targetObject, args);}return result;} }
AOP中的一些概念:
Aspect(切面):指橫切性關注點的抽象即為切面,它與類相似,只是兩者的關注點不一樣,類是對物體特征的抽象,而切面橫切性關注點的抽象.
?
joinpoint(連接點):所謂連接點是指那些被攔截到的點。在spring中,這些點指的是方法,因為spring只支持方法類型的連接點,實際上joinpoint還可以是field或類構造器)
?
Pointcut(切入點):所謂切入點是指我們要對那些joinpoint進行攔截的定義.
?
Advice(通知):所謂通知是指攔截到joinpoint之后所要做的事情就是通知.通知分為前置通知,后置通知,異常通知,最終通知,環繞通知
?
Target(目標對象):代理的目標對象
?
Weave(織入):指將aspects應用到target對象并導致proxy對象創建的過程稱為織入.
?
Introduction(引入):在不修改類代碼的前提下, Introduction可以在運行期為類動態地添加一些方法或Field.
?
?
轉載于:https://www.cnblogs.com/E-star/p/3560684.html
總結
以上是生活随笔為你收集整理的利用CGLib实现动态代理实现Spring的AOP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iPhone定时拍照快乐自拍
- 下一篇: gradle idea java ssm