spring中的AOP
来源:互联网 发布:培训机构程序员 编辑:程序博客网 时间:2024/06/08 07:08
一直搞不清spring中的aop与动态代理有什么区别,应该可以说aop是要使用动态代理的----------我想应该是对的0.0
aop的处理主要分为四种:方法执行前进行什么处理、方法执行后进行什么处理、抛出异常时进行什么处理和方法环绕进行什么处理。
1.spring中一般的aop实现(即不适用通配符的实现):
<!--A为被代理者,或者说是被通知者-->
<bean id="A" class="A的包路径" scope=“prototype”>
<property name="A中的属性" value=“属性的值”>
</bean>
<!--通知前,即在进行A中的方法之前执行的业务逻辑类配置-----其中B类需要实现MethodBeforeAdvice接口-->
<bean id="B" class="B的包路径" scope=“prototype”></bean>
<!--通知后,即在进行A中的方法之后执行的业务逻辑类配置-----其中C类需要实现AfterReturningAdvice接口-->
<bean id="C" class="C的包路径" scope=“prototype”></bean>
<!--方法环绕,写在D类中的proceed()方法前的能在A中的方法执行之前执行业务逻辑处理,写在proceed()方法后的能在A中的方法执行之后执行业务逻辑处理-----其中D类需要实现MethodInterceptor接口-->
<bean id="D" class="D的包路径" scope=“prototype”></bean>
<!--具体的代理类---其中的class是固定写法-->
<bean id="E" class=“org.springframework.aop.framework.ProxyFactoryBean”>
<!--其中A表示被通知者,即被代理者>
<property name="target" ref="A"></property>
<!--选择aop处理方式,可以同时选择多个,但是需要注意的是:环绕之前的优先级大于before,环绕之后的优先级大于after>
<property name="interceptorName">
<list>
<value>B<value>
<value>C<value>
<value>D<value>
</list>
</property>
</bean>
2.通配符的aop实现:
看完方法1中的实现,你是否在思考一个问题,在方法1中,只有涉及到要是用A中的方法才能触发,那么我要在处理其他类中的方法也触发呢,怎么办,那有需要复制粘贴再写一遍,如果有通配符,将处理面扩大,那就不需要写重复的代码了。
<!--aop处理的bean配置,在该类中可以进行切面处理-->
<bean id="a" class="a的包路径" scope=“prototype”></bean><!--aop配置-->
<aop:config>
<!--其中expression部分是切面范围的配置(即谁会被代理),第一个*表示方法的访问控制修饰符,K表示路径,L:如果K的路径到类为止,则L用.就行,如果K的路径没有到类,则L用..代替,第二个*代表方法名,(..)中的..表示参数-->
<aop:pointcut id="b" expression="execution(* kL*(..))"
<aop:sapect id="c" ref="a">
<!--执行方法之前进行处理-->
<aop:before pointcut-ref="b" method="a类中的方法名"/>
</aop:aspect>
</aop:config>
</bean>
说明:在该配制方法中,只要是进过expression这个范围的都会被a类代理,在方法执行前(后、环绕)进行切面处理。
- Spring 中的 AOP
- Spring 中的 AOP
- spring中的aop术语
- Spring中的AOP
- Spring中的AOP-ProxyFactory
- Spring中的AOP详解
- spring中的AOP
- Spring中的AOP
- Spring框架中的aop
- Spring中的AOP理解
- Spring中的AOP简述
- Spring中的AOP
- Spring中的AOP配置
- Spring中的AOP
- Spring中的AOP理解
- Spring 中的 AOP
- spring aop中的expression
- Spring中的AOP思想
- socket编程
- 结构对齐--__packed与#pragma pack
- Cannot instantiate the type HttpClient问题
- 设计的一个适合小团队小项目的git工作流
- 如何使用Hexo建立自己的Github Pages博客
- spring中的AOP
- cxf-spring-pratice-client
- Python error: Microsoft Visual C++ 9.0 is required
- FL Studio安装插件太多,容易混淆怎么办?
- 随机数进阶
- sql server 中 like 中文不匹配问题解决就这么简单
- Ext.grid.feature.Grouping页头分组如何显示其他信息
- 写给大数据开发初学者的话
- 将字符串转换成表