`
willwen
  • 浏览: 25673 次
  • 性别: 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

    `BeanNameAutoProxyCreator`是Spring AOP实现中的一种代理创建器,它根据bean的名称来决定是否对bean进行代理处理。在本篇文章中,我们将深入探讨`BeanNameAutoProxyCreator`的使用方法及其背后的原理。 首先,`...

    Spring实现自动代理Demo

    本篇将深入探讨如何利用Spring实现自动代理,特别是关注`BeanNameAutoProxyCreator`的使用方法。 一、Spring自动代理简介 自动代理是Spring AOP的核心功能之一,它创建了一个代理对象来包装原始的bean。当调用代理...

    spring代理详解.txt

    在Spring框架中,代理机制主要用于实现AOP(面向切面编程)功能,通过动态创建代理对象来拦截目标方法调用,从而实现如事务管理、日志记录、性能监控等横切关注点。 ### 1. ProxyFactoryBean `ProxyFactoryBean`是...

    spring配置文件

    &lt;bean id="aopAdvisor" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"&gt; &lt;value&gt;userdao &lt;value&gt;transactionInterceptor ``` 这里定义了一个名为`aopAdvisor`...

    Springboot源码 AbstractAdvisorAutoProxyCreator解析

    1. 基于Bean配置名规则的自动代理生成器:BeanNameAutoProxyCreator是这种类型的实现类,它允许为一组特定配置名的Bean自动创建代理实例。 2. 基于Advisor匹配机制的自动代理创建器:...

    spring 事务(6中配置完全降解)

    Spring 事务管理也可以与AOP结合,通过`aop:config`标签定义切点和通知,来实现事务的声明式管理。这种方式更加灵活,可以实现更细粒度的事务控制。 在实际开发中,根据项目需求和团队习惯,可以选择适合的事务...

    Spring声明式事务和@Aspect的拦截顺序问题的解决

    其中,@Aspect 声明的 AOP 是通过 AnnotationAwareAspectJAutoProxyCreator 进行代理的,而声明式事务是 BeanNameAutoProxyCreator 方式进行代理的。由于这两种代理方式的拦截顺序不同,会导致拦截顺序问题。 解决...

    事物管理配置文件.txt

    为了使事务拦截器能够应用于业务层的方法调用,我们需要使用`BeanNameAutoProxyCreator`来创建AOP代理: ```xml class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"&gt; &lt;!-- ... --...

    spring拦截器的简单例子.docx

    &lt;bean id="autoproxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"&gt; ``` 最后,`autoproxy` Bean 是一个自动代理创建器,它会为 `purviewimpl` 这个 Bean 创建一个代理...

    企业级信息系统开发教学PPT(3.1)

    Spring还提供了声明式事务管理,如TransactionProxyFactoryBean、BeanNameAutoProxyCreator(常用)和DefaultAdvisorAutoProxyCreator等不同方式,方便事务控制。 4. **整合应用**:Struts 2、Hibernate 和 Spring ...

    spring1.2申明式事务.txt

    Spring框架中的声明式事务管理是通过AOP(面向切面编程)来实现的。这种方式相比于编程式事务管理更为简洁、易于理解和维护。Spring 1.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 事务代理配置

    2. **使用BeanNameAutoProxyCreator**:根据Bean名称自动创建事务代理,这需要对Spring AOP有更深入的理解。 3. **使用DefaultAdvisorAutoProxyCreator**:与`BeanNameAutoProxyCreator`类似,但其配置的可读性可能...

    Java实训教程 Java软件开发实战 Java开发框架 log4jdbc 共5页.pptx

    &lt;bean id="dataSourceLog4jdbcAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"&gt; &lt;value&gt;log4jdbcInterceptor &lt;value&gt;dataSource ``` 这段...

    开源框架 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 环绕...

Global site tag (gtag.js) - Google Analytics