spring aop学习笔记

具体的总结在下面的地址已经很清楚了
http://jamesby.iteye.com/blog/39899
感觉记清楚创建spring aop的流程比较重要 :
1.创建切面。
切面=通知+切点
2.切面在spring中是以代理方式实现的,所以还需要代理。
最原始的是proxyFactoryBean
一般都是用自动代理,而自动代理又有三种
第一种:基于spring上下文的(xml文件),DefaultAdvisorAutoProxyCreator。只要在xml中申明此bean,但无beanid。这样就可以直接使用切面了。例如:
首先声明一个切面:
   <bean id="audienceAdvisor"..><property name="advice">.<property name="expression">.</bean>

然后申明一个代理:
 <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>

使用目标bean:
 <bean id="表演家1" class=".." autowire="constructor"><constructor-arg ref=""></bean>


第二种:基于@AspectJ注解驱动切面的自动代理,直接在通知中注解切面
操作如下:
1.声明注解后的切面a1为一个bean
 <bean id="a1" class...>

2.声明一个自动代理bean,将注解的bean转换为代理通知。spring提供了一个名为AnnotationAwareAspectJAutoProxyCreator自动代理器,可以使用声明bean的形式,也可以用配置元素
<aop:aspectj-autoproxy/>

第三种:纯粹的pojo切面,在xml中定义切面。这个比较简单就不说了

3.AspectJ aop解决方案
1.实现多类型切点.spring aop中能是方法切点。
2.aspectj可以将某个bean注入到aspectj切面中,从而可以实现更复杂的切 面。

[color=red]疑点1:spring aop不知道可不可以将bean注入到切面中?测试了下貌似不行。[/color]
[color=red]疑点2:按照http://lighter.iteye.com/blog/42673作者的例子,发现使用ProxyFactoryBean代理时,其中属性interceptorName可以是切面也可以是通知?[/color]
[color=red]疑点3:使用纯粹的pojo切面时,如果我在 <aop:before..>执行函数体时需要判断其返回值怎么办?比如当执行函数返回true时程序继续运行,返回false时中断。就像是在发贴之前先判断是否登录一样,登录则继续运行,否则跳转到登录页或给出提示。。[/color]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值