浏览 1359 次
锁定老帖子 主题:spring aop学习笔记
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-02-17
最后修改:2009-02-17
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切面中,从而可以实现更复杂的切 面。 疑点1:spring aop不知道可不可以将bean注入到切面中?测试了下貌似不行。 疑点2:按照http://lighter.iteye.com/blog/42673作者的例子,发现使用ProxyFactoryBean代理时,其中属性interceptorName可以是切面也可以是通知? 疑点3:使用纯粹的pojo切面时,如果我在 <aop:before..>执行函数体时需要判断其返回值怎么办?比如当执行函数返回true时程序继续运行,返回false时中断。就像是在发贴之前先判断是否登录一样,登录则继续运行,否则跳转到登录页或给出提示。。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |