Spring AOP基本概念

AOP

业务需求:

1.  拦截所有业务方法

2.  判断用户是否有权限,有权限就允许他执行业务方法,没有权限则不允许他执行业务方法(是否有权限是根据user是否为null作为判断依据)

 

横切性关注点

 

AOP—代理对象(动态代理)

调用者------à代理对象------à目标对象

使用JDK中的Proxy类,要求目标对象必须实现某一接口

 

JDKProxyFactory

CGLIB(第三方生成动态代理的框架,不要求目标对象必须实现接口,Spring中有带)

 

环绕通知:

前置通知(目标方法执行前执行)

后置通知(目标方法执行后执行)

例外通知(捕获异常后执行)

最终通知(finally{}中执行)

 

 

AOP中的概念

Aspect(切面):横切面关注点的抽象即为切面,它与类相似,只是两者的关注点不一样,类是对物体特征,而切面是横切面关注点的抽象。

Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在Spring中,这些点指的是方法,因为Spring只支持方法类型的连接点,实际上joinpoint还可以是field或类构造器。

Pointcut(切入点):所谓切入点是指我们要对哪些joinpoint进行拦截的定义。

Advice(通知):所谓通知是指拦截到joinpoint后所要做的事情,通知分为前置通知、后置通知、异常通知、最终通知、环绕通知。

Target(目标对象):代理的目标对象。

Weave(织入):指将aspects应用到target对象并导致proxy对象创建的过程称为织入。

Introduction(引入):在不修改类代码的前提下,Introduction可以在运行期为类动态地添加一些方法或field

 

 

使用Spring进行面向切面(AOP)编程

要进行AOP编程,首先我们要在Spring的配置文件中引入aop命名空间

       <xmlns:aop=“http://www.springframework.org/schema/aop”>

       <xsi:schemaLocation=“http://www.springframework.org/aop

                                  http://www.springframework.org/aop/spring-aop-2.5.xsd”>

 

Spring提供了两种切面使用方式,实际工作中我们可以选用其中一种:

l         基于XML配置方式进行AOP开发

l         基于注解方式进行AOP开发

必须的jar包:aspectjrt.jaraspectweaver.jarcglig-nodep-xxx.jar

 

基于注解方式声明切面

l         首先启动对@Aspect注解的支持:

       <aop:aspectj-autoproxy/>

l         Spring容器管理用注解方式声明的切面类(配置bean

l         编写具体的切面类

 

基于XML配置方式声明切面

       <aop:aspectj-autoproxy/>

       <bean id=“aspectbean” class=“cn.itcast.service.MyInterceptor”>

       <aop:config>

              <aop:aspect id=“asp” ref=“aspectbean”>

              <aop:pointcut id=“mycut” expression=“execution(* cn.itcast.service.impl.PersonServiceBean.*(..))”>

              <aop:before pointcut-ref=“mycut” method=“”>

              <aop:after-returning pointcut-ref=“mycut” method=“”>

              <aop:after-throwing pointcut-ref=“mycut” method=“”>

              <aop:after pointcut-ref=“mycut” method=“”>

<aop:around pointcut-ref=“mycut” method=“”>

       </aop:config>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值