`
willwen
  • 浏览: 24542 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

BeanNameAutoProxyCreator实现AOP

阅读更多

Spring提供可以根据beanName匹配后进行自动代理的解决方法:
示例如下:
系统日志记录功能模块:
  <bean id="autoActionLogInterceptor"
         class="*.*.*.aop.framework.autoproxy.BeanNameAutoProxyCreator">
      <property name="beanNames">
<list>
<value>*Action</value><!--代理所有action-->
</list>
      </property>
      <property name="interceptorNames">
<list>
<value>actionAfter</value>
<value>actionThrow</value>
<value>actionBefore</value>
</list>
      </property>
    </bean>
切面配置:
<bean id="actionAfter"  class="*.*.*.aspect.advice.ActionLogAfterAdvice">
       <property name="logService">
<ref bean="logService" />
      </property>
</bean>  
<bean id="actionThrow"  class="*.*.*.aspect.advice.ActionLogThrowAdvice">  
        <property name="logService">
<ref bean="logService" />
      </property>
</bean>
<bean id="actionBefore"  class="*.*.*.aspect.advice.ActionLogBeforeAdvice"> 
         <property name="logService">
<ref bean="logService" />
      </property>
               <property name="tellerAuthorizationUtil">
<ref bean="tellerAuthorizationUtil" />
      </property>
</bean>

public class ActionLogThrowAdvice implements ThrowsAdvice {
Logger logger = Logger.getLogger(this.getClass());
LogService logService;
public LogService getLogService() {
return logService;
}
public void setLogService(LogService logService) {
this.logService = logService;
}
public void afterThrowing(Method m,Object[] args,Object target,Exception ex){
// String className=target.getClass().getName();
// String methodName=m.getName();
ServiceRequest request=(ServiceRequest)args[0];
Object tellerObj =  request.getSessionDTO();
if(tellerObj!=null){
if(tellerObj instanceof TellerOpLogDTO){
TellerOpLogDTO tellerOpLog=(TellerOpLogDTO)tellerObj;
tellerOpLog.setRequestResult("failure");
tellerOpLog.setErrorDescription(ex.getMessage());
try {
logService.recordTellerOpLog(tellerOpLog);
} catch (Exception e) {
this.logger.error("ActionLogThrowAdvice.afterThrowing写日志时发生错误",e);
}
}
}
}
}

 

0
0
分享到:
评论

相关推荐

    AOP usage -- BeanNameAutoProxyCreator usage

    NULL 博文链接:https://tomboxfan.iteye.com/blog/350398

    spring in action英文版

     3.1.2 Spring的AOP实现  3.2 创建通知  3.2.1 前置通知  3.2.2 后置通知  3.2.3 环绕通知  3.2.4 异常通知  3.2.5 引入通知  3.3 定义切入点  3.3.1 在Spring中定义切入点  3.3.2 ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    BeanNameAutoProxyCreator 7.9.1.2. DefaultAdvisorAutoProxyCreator 7.9.1.3. AbstractAdvisorAutoProxyCreator 7.9.2. 使用元数据驱动的自动代理 7.10. 使用TargetSources 7.10.1. 热交换目标源 7.10.2. 池化目标...

    开源框架 Spring Gossip

    BeanNameAutoProxyCreator DefaultAdvisorAutoProxyCreator &lt;br&gt; 持久层 来看看 Spring 的 IoC 容器与 AOP 框架如何应用于持久层,包括了资料库、交易等相关议题。 资料库存取 Spring ...

    Spring.3.x企业应用开发实战(完整版).part2

    6.1.3 AOP的实现者 6.2 基础知识 6.2.1 带有横切逻辑的实例 6.2.2 JDK动态代理 6.2.3 CGLib动态代理 6.2.4 AOP联盟 6.2.5 代理知识小结 6.3 创建增强类 6.3.1 增强类型 6.3.2 前置增强 6.3.3 后置增强 6.3.4 环绕...

    Spring3.x企业应用开发实战(完整版) part1

    6.1.3 AOP的实现者 6.2 基础知识 6.2.1 带有横切逻辑的实例 6.2.2 JDK动态代理 6.2.3 CGLib动态代理 6.2.4 AOP联盟 6.2.5 代理知识小结 6.3 创建增强类 6.3.1 增强类型 6.3.2 前置增强 6.3.3 后置增强 6.3.4 环绕...

    Spring + Hibernate + Struts 事务配置小例子(带提示框等小技巧)

    class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"&gt; &lt;!-- 指定对满足哪些bean name的bean自动生成业务代理 --&gt; &lt;!-- 下面是所有需要自动创建事务代理的bean--&gt; ...

    struts2驱动包

    nested exception is java.lang.AbstractMethodError: org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator.postProcessAfterInstantiation(Ljava/lang/Object;Ljava/lang/String;)Z at org....

    spring学习笔记

    Spring的Ioc Spring的AOP , AspectJ Spring的事务管理 , 三大框架的整合 目录 1.1 Spring 框架学习路线:..........................................................................................................

    SPRING API 2.0.CHM

    BeanNameAutoProxyCreator BeanNameAware BeanNameUrlHandlerMapping BeanNameViewResolver BeanNotOfRequiredTypeException BeanPostProcessor BeanPropertyBindingResult BeanPropertySqlParameterSource ...

    spring-framework-reference4.1.4

    Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................

    spring-framework-reference-4.1.2

    Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................

Global site tag (gtag.js) - Google Analytics