spring aop学习

之前没系统的学习spring,看书也是看得一知半解,最近稍微系统的学习了一下。尤其是aop,下面就写写我学习的感受,以加深我学习的印象。

在检察院二期的时候我试着去采用spring的声明式事务来代替编程式事务,spring的声明式事务其实其实质就是spring的aop,而spring aop的实质又是jdk的动态代理或CGLIB.

java的代理包括动态代理和静态代理,比如我要在picLogic的每个方法的每个方法加上权限检查checkSecurity,以前采用的办法是在picLogic的每个method开始的时候加入checkSecurity(),但是明白了jdk的proxy之后,可以这么做。1、采用静态代理,生成一个一个类实现同一个interface,其构造函数的参数为此接口

public class StaticProxy implements UserManager{

private UserManager userManager;

public StaticProxy(UserManager userManager){

this.userManager=userManager;

}

.....................

}

实现interface的所有方法,并在每个方法start的时候加入checkSecurity()

2、动态代理:implements InvocationHandler,newProxy的参数为Object,并返回一个动态代理,用Proxy.newProxyInstance(a,b,c),其中的参数详见api,在invoke方法中根据自己的需要在method之前、之后、exception等中加入相应的代码,方法的执行调用method.invoke(),采用的是java的反射机制。

其实spring的aop就是采用的动态代理,还有cglib代理,然后在spring的aop就是配置和少量代码,尤其是声明式事务,其中声明式事务包括pointcut等等,详见spring的api。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值