SPING 概念

一、概念
cross-cutting concerns 横向切入功能,和具体的业务逻辑无关,如日志、鉴权等。
Aspect 将cross-cutting concerns收集起来,设计成可以重用的对象,这个对象就叫Aspect
Advice 就是Aspect的具体实现
Joinpoint 就是在程序中执行加入到业务流程的点或者时机。Spring 只支持方法的joinPoint,也就是说只能在方法前后执行。
Pointcut 定义了感兴趣的joinPoint,当调用的方法符合pointcut的表达式的时候,就将advice织入到应用程序中。(这个使用annotation方式比较好理解)
Target Advice被应用的对象。
Introduction 对于一个现存的类,introduction可以为其增加行为,且不用修改该类的程序。就是在执行期动态地加入一些方法和行为,而不用修改代码。
Proxy 代理。动态代理和静态代理。spring中主要采用动态代理。有部分用CGLIB代理。
weave Advice被应用到对象的过程叫weave。织入的3个时间点:compile time、classload time、runtime。spring中在运行期织入到目标。
二、spring 的3中实现aop的方式
1、通过实现spring api,并设置代理对象。
2、基于xml的设置,使用<aop>标签。
3、使用基于@AspectJ的Annotation的支持。
三、advice的分类
Before Advice 在对象方法之前执行。通过实现org.springframework.aop.MethodBeforeAdvice接口来实现。
After Advice 在对象方法之后执行。通过实现org.springframework.aop.AfterReturningAdvice接口来实现。
Around Advice 在对象方法前后执行。通过实现org.aopalliance.intercept.MethodInterceptor接口来实现。根据具体情况决定是否调用methodInvocation的proceed()方法
Throw Advice 异常发生时通知某些服务。通过实现org.springframework.aop.ThrowAdvice接口来实现。
要想advice起作用,必须在代理中配置。
四、PointcutAdvisor
接口PointcutAdvisor继承了Advisor接口,在spring中使用PointcutAdvisor提供Pointcut的实例,具体结合Advice,spring内建的Pointcut都有对应的PointcutAdvisor
1、NameMatchMethodPointcutAdvisor,可以用表达式指定advice应用目标上的方法名称。
<bean id="helloadvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
<property name="mappedName" value="方法正则表达式(如*hello)"/>
<property name="advice" ref="advice的bean实例"/>
</bean>

2、RegExpMethodPointcutAdvisor
<bean id="regAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="pattern" value="方法正则表达式(如*hello)"/>
<property name="advice" ref="advice的bean实例"/>
</bean>

3、DefaultPointcutAdvisor
<beanid="defaultAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
<propertyname="advice"ref="adviceBean"></property>
<propertyname="pointcut"ref="pointcutBean"></property>
</bean>

4、ControlFlowPointcut Spring 提供的动态pointcut功能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值