package com.crm.web.aop;
import java.lang.reflect.Method;
import org.springframework.aop.ThrowsAdvice;
public class throwErrro implements ThrowsAdvice {
public void afterThrowing(Method method, Object[] args, Object target,
Throwable subclass) throws Throwable {
System.out.println("执行"+target.getClass().getName()+"的"+method.getName()+"方法抛出"+subclass.getClass().getName());
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd ">
<bean id="myTransaction"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionfactory"></property>
</bean>
<bean id="LogAdvice" class="com.crm.web.aop.throwErrro"></bean>
<tx:advice id="txAdvice" transaction-manager="myTransaction">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="do*" propagation="REQUIRED" />
<tx:method name="*" propagation="SUPPORTS"/>
</tx:attributes>
</tx:advice>
<!--注意了代理方式-->
<aop:config proxy-target-class="true">
<aop:pointcut id="put"
expression="execution(* com.crm.web.biz.impl.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="put" />
<aop:advisor advice-ref="LogAdvice" pointcut-ref="put" />
</aop:config>
</beans>
分享到:
相关推荐
本文旨在深入探讨Spring AOP中的两个核心概念:`Aspect`与`Advisor`的区别,并通过具体的配置示例帮助读者更好地理解和应用这些概念。 #### 二、Aspect的概念解析 1. **定义**: - `Aspect`在Spring AOP中被称为...
- `<aop:advisor>`:可以包含一个通知和一个切入点,是更细粒度的配置单元。 在实际应用中,我们会在`<bean>`元素中定义切面类,并在`<aop:config>`中通过`<aop:aspect>`元素引用它,然后定义相应的通知和切入点。...
Spring AOP的配置通常在Spring的XML配置文件中完成,通过`<aop:config>`标签开启AOP支持,然后使用`<aop:advisor>`定义Advisor,指定advice和pointcut。在例子中,BeanImpl类的theMethod()方法会在执行前调用`...
在Spring配置文件中,我们可以使用`<aop:config>`元素来声明切面,`<aop:pointcut>`定义切点,`<aop:advisor>`或`<aop:aspect>`定义通知。 例如,下面是一个简单的切面定义: ```xml <aop:config> <aop:pointcut ...
1. 配置Advisor:Advisor是通知和切点的组合。在Spring的XML配置文件中,我们可以创建一个`<aop:config>`元素,并在其内部定义`<aop:advisor>`来创建Advisor。Advisor的`advice-ref`属性用于指定通知bean的ID,`...
- `<aop:advisor>`:定义通知和切入点的关联,指定何时何地执行通知。 - `<aop:aspect>`:定义切面,包括其通知和切入点。 - `<aop:before>`、`<aop:after>`、`<aop:around>`等:分别用于定义不同类型的通知。 **5....
Spring AOP 拦截器 Advisor 是 Spring 框架中的一个重要概念,它与切面编程密切相关,用于实现细粒度的控制和增强应用程序的行为。在 Spring AOP 中,Advisor 是一个组合了通知(Advice)和切入点(Pointcut)的对象...
<aop:advisor advice-ref="logAfter" pointcut-ref="pointcut"/> <aop:advisor advice-ref="logBefore" pointcut-ref="pointcut"/> </aop:config> ``` - **实现通知接口**:Spring提供了多种类型的接口,如`...
<aop:advisor advice-ref="myAdvice" pointcut-ref="myPointcut"/> ``` 在这里,`advice-ref`属性引用了之前定义的通知ID。 总结来说,通过Spring的XML配置,我们可以定义连接点(方法)、切点(一组连接点)、通知...
<aop:advisor id="loggingAdvisor" advice-ref="loggingAdvice" pointcut-ref="myPointcut"/> ``` `advice-ref`引用通知,`pointcut-ref`引用切入点。 5. **定义代理(Proxies)**: Spring默认使用JDK动态...
3. `<aop:advisor>`:顾问元素,它将切入点与通知关联起来。顾问包含了何时以及如何执行通知的信息。 4. `<aop:aspect>`:定义一个切面,可以包含多个通知和切入点。切面可以看作是封装了多个相关通知的逻辑单元。 ...
3. **关联通知与切点**: 使用`<aop:pointcut>`定义切点,并通过`<aop:advisor>`将通知与切点关联起来。 例如: ```xml <aop:config> <aop:pointcut id="myPointcut" expression="execution(* com.example.service....
5. `<aop:advisor>`:结合切点和通知,定义了一个顾问,它会在匹配的方法上应用通知。 例如,一个简单的XML配置可能如下所示: ```xml <aop:config> <aop:aspect id="loggingAspect" ref="loggingService"> <aop...
<aop:advisor advice-ref="myAdvice" pointcut-ref="serviceMethods"/> ``` 这里的`advice-ref`引用了之前定义的通知,`pointcut-ref`引用了切点。 在Maven项目中,确保你的pom.xml文件包含了Spring AOP和Spring ...
在Spring配置中,我们可以通过`<aop:config>`标签来定义切面,然后使用`<aop:advisor>`或`<aop:aspect>`来指定拦截器。例如: ```xml <aop:config> <aop:aspect id="loggingAspect" ref="loggingInterceptor"> ...
1. **XML配置**:在Spring的配置文件中,可以通过<aop:config>标签来定义切面,<aop:pointcut>定义切点,<aop:advisor>或<aop:aspect>定义通知。例如: ```xml <aop:config> <aop:pointcut id="myPointcut" ...
<aop:advisor advice-ref="loggingAdvice" pointcut-ref="myServiceMethods"/> </aop:config> <aop:aspect id="loggingAspect"> <aop:before method="logBefore" pointcut-ref="myServiceMethods"/> <aop:after ...
<aop:advisor advice-ref="myAdvice" pointcut-ref="myPointcut"/> </aop:config> <aop:aspect id="myAspect"> <!-- 定义通知 --> <aop:before method="beforeMethod" pointcut-ref="myPointcut"/> <aop:after-...
接着,使用`<aop:advisor>`或`<aop:aspect>`标签来创建通知,通知是实际的切面逻辑,可以在方法调用前后执行。`<aop:before>`、`<aop:after>`、`<aop:around>`和`<aop:after-throwing>`分别对应于前置通知、后置通知...
<aop:advisor advice-ref="loggingAdvice" pointcut-ref="myBusinessMethods"/> ``` 4. **编写通知逻辑**:在服务类中,我们可以定义一个方法作为通知,如`@Before`、`@After`、`@Around`等注解的方法。例如,一...