返回首页

spring的AOP的配置方式

时间:2011-12-11 01:20来源:知行网www.zhixing123.cn 编辑:麦田守望者

1. Proxy代理
其中类MyThrowsAdvice实现了接口中的public void afterThrows( [Method method,] [Object args,] [Object target,] Throwable throwable );方法
<bean id=”bizOneTarget” class=”com.company.biz.impl.BizProcessImpl”/>
<bean id=”throwsAdvice” class=”com.company.advice.MyThrowsAdvice”/>
<bean id=”bizOne” class=”org.springframework.aop.framework.ProxyFactoryBean”>
<property name=”target”><ref bean=”bizOneTargte”/></property>
<property name=”proxyInterfaces”>
<value>com.company.biz.IBizProcessImpl</value>
</property>
<property name=”interceptorNames”>
<list>
<value>throwsAdvice</value>
</list>
</property>
</bean>

在上面的基础上还可以增加匹配方式
<bean id=" throwsAdviser"
class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice">
<ref local=" throwsAdvice"/>
</property>
<property name="pattern">
<value>.*</value>
</property>
</bean>
2. 简化配置
如果有多个BizProcess的对象需要代理,我们在Spring配置中为每一个Bean都配置一个代理,那么配置文件的维护就成了麻烦。为此,Spring提供了比较方便的方法解决这个问题,比如BeanNameAutoProxyCreator、DefaultAdviceAutoProxyCreator和metadata autoproxying。我们采用了BeanNameAutoProxyCreator,因为他比较直观和简单
配置如下:
<bean id=”beanNameAutoProxyCreator” class=”org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator”>
<property name=’beanNames”>
<list>
<value>*Service</value>
</list>
</property>
<property name=”interceptorNames”>
<value>throwsAdvice</value>
</property>
</bean>
另外的一种简化配置使用 DefaultAdvisorAutoProxyCreator 自动代理生成器.
3. spring2的良好配置方式
以下的配置方式允许对同一个类实行多次代理,推荐使用.
第一种方式, methodSecurityInterceptor类实现了AOP联盟的规范接口,是一种环绕通知.
<aop:config>
<aop:pointcut id="idempotentOperation1"
expression="execution(* test.com.wenc.spring2.acegi.T*.*(..))" />

<aop:advisor pointcut-ref="idempotentOperation1"
advice-ref="methodSecurityInterceptor" />
</aop:config>

<bean id="methodSecurityInterceptor"
class="org.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor">

第二种方式acegiMethod类按照spring的环绕方式实现,不需要指定接口,只要在指定方法的第一个参数为ProceedingJoinPoint.
<aop:config>
<aop:aspect id="acegiMethodTest2" ref="acegiMethod">

<aop:pointcut id="idempotentOperation2"
expression="execution(* test.com.wenc.spring2.acegi.T*.*(..))" />

<aop:before pointcut-ref="idempotentOperation2"
method="printLog" />

</aop:aspect>

</aop:config>

<bean id="acegiMethod"
class="test.com.wenc.spring2.acegi.AcegiMethod">
</bean>

------分隔线----------------------------
标签(Tag):Struts2 Struts2教程 Struts2基础教程 Struts2技巧 Struts2源代码
------分隔线----------------------------
推荐内容
  • 如何安装oracle 10g数据库 oracle 10g安装图解

    特意为大家制作了一份 oracle 10g安装图解 ,这样大家在安装的时候就不会出错了,至于...

  • Eclipse 如何安装Spring IDE支持

    ECLIPSE ARCHIVE离线安装包 SIZE 4.6 springsource-tool-suite-3.8.1.RELEASE-e4.6-up...

  • Eclipse 初始设置图解教程

    一、自动补全 .abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 二、字体设置 ...

  • idear如何配置JRebel实现热部署

    习惯写PHP之后,发现写JavaEE最蛋疼的是每次修改完代码,需要重启Tomcat服务,当项目...

  • java常用设计模式原型模式及深浅拷贝

    原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的...

  • java中单例模式的4种实现方式

    单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式...

  • 猜你感兴趣
  • 教育技术学动态
  • 教育技术学论文
  • 理论研究
  • 应用研究
  • 资源收藏
  • 百家观点
  • 英文文献
  • 中国电化教育
  • 电化教育研究
  • 中国远程教育
  • 开放教育研究
  • 现代教育技术
  • 远程教育杂志
  • 现代远距离教育
  • 中国教育信息化
  • 中国信息技术教育
  • 中小学信息技术
  • Flash龙8娱乐官网手机版
  • Photoshop龙8娱乐官网手机版
  • 3DMAX龙8娱乐官网手机版
  • AutoCAD龙8娱乐官网手机版
  • CorelDRAW龙8娱乐官网手机版
  • Matlab龙8娱乐官网手机版
  • 其他龙8娱乐官网手机版
  • .Net龙8娱乐官网手机版
  • Asp龙8娱乐官网手机版
  • Php龙8娱乐官网手机版
  • Jsp龙8娱乐官网手机版
  • Ajax龙8娱乐官网手机版
  • Android教程
  • 其他龙8娱乐官网手机版
  • Word教程
  • Excel教程
  • PowerPoint教程
  • Ubuntu教程
  • 其他教程
  • 课件下载
  • 软件下载
  • 视频教程下载
  • 其他下载
  • 教案大全
  • 试题大全
  • 课件大全
  • 其他大全
  • 人像摄影
  • 风光摄影