<aop:config>
<aop:aspect id="SaveBlogAspect" ref="saveLogWithSession">
<aop:pointcut id="SaveBlogPointcut" expression="execution(* com.coo8.bip.*..*.getAllSysCompany(..)) and args(request,..)" />
<aop:after-returning method="saveLog" pointcutref="SaveBlogPointcut" arg-names="request"/>
</aop:aspect>
</aop:config>
<bean id="saveLogWithSession" class="com.coo8.bip.util.SaveLogWithSession">
</bean>
自定义类SaveLogWithSession的saveLog()方法可以得到spring注入的request参数。
因为配置为after-returning方式,所以系统执行完getAllSysCompany()方法之后会执行saveLog()方法,
并把request参数传递给saveLog()方法。前提是getAllSysCompany()方法也要有request参数。
<aop:config>
<aop:pointcut id="addManagermethod" expression="execution(* com.coo8.bip.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="addManagermethod" />
<aop:advisor pointcut="execution(* com.coo8.bip.*..*DAO.save*(..))
|| execution(* com.coo8.bip.*..*DAO.update*(..))
|| execution(* com.coo8.bip.*..*DAO.get*(..))
|| execution(* com.coo8.bip.*..*DAO.delete*(..))"
advice-ref="logMethodBeforeAdvice"/>
</aop:config>
<bean id="logMethodBeforeAdvice" class="com.coo8.bip.util.DaoLogMethodBeforeAdvice">
</bean>
这个例子与上例不同之处是没有定after-returning切面类型,所以要通过自定义类
DaoLogMethodBeforeAdvice实现MethodBeforeAdvice、AfterReturningAdvice接口,来告诉spring
在什么时候执行该切面
分享到:
相关推荐
Spring AOP,全称Spring面向切面编程,是Spring框架中的一个重要组成部分,它提供了一种在不修改原有代码的情况下,对...了解并熟练掌握这两种配置方式,能够帮助我们更好地利用Spring AOP提高代码的可维护性和复用性。
本示例提供了一种通过注解和配置文件两种方式实现Spring AOP的方法。 首先,我们来详细讲解通过注解实现Spring AOP。在Spring中,我们可以使用`@Aspect`注解来定义一个切面,这个切面包含了多个通知(advice),即...
- **代理(Proxy)**:Spring AOP通过代理模式来实现切面功能,有JDK动态代理和CGLIB代理两种方式。 **2. JDK 动态代理** - 当目标类实现了接口时,Spring AOP会选择使用JDK动态代理。它会生成一个实现了目标类所有...
接下来我们将详细探讨这两种配置方式。 **一、基于XML的Spring AOP配置** 在传统的Spring AOP配置中,我们通常会在`applicationContext.xml`或类似的配置文件中定义切面、通知(advice)、切入点(pointcut)等...
通过以上两种配置方式,我们可以看到Spring AOP提供了非常灵活且强大的功能。使用`ProxyFactoryBean`可以针对单个对象进行精确控制,而`DefaultAdvisorAutoProxyCreator`则更适合于自动化的场景,特别是当项目中有...
在Spring中,AOP的实现依赖于两个主要组件:通知(Advice)和切点(Pointcut)。通知是实际执行的增强代码,如方法调用前的记录日志;切点是通知应该应用到的方法或类。Spring支持五种类型的的通知:前置通知...
对比这两种方式,XML配置方式更为灵活,适合复杂的AOP配置,而AOP标签方式更简洁,适用于大多数日常需求。在实际项目中,可以根据项目规模和团队偏好选择合适的方法。 综上所述,Spring AOP提供了通过XML配置和AOP...
**execution()**和**@Annotation()**是两种常用的切入点表达式: - **execution()**:用于匹配方法执行的连接点。例如,`execution(* com.example.service.*.*(..))`表示匹配`com.example.service`包下所有类的所有...
Spring支持两种AOP的实现方式:Spring AspectJ注解风格和Spring XML配置风格。使用AspectJ注解风格是最常见的,它允许开发者直接在方法上使用注解来定义切面。 Spring AOP中有五种不同类型的的通知(Advice): 1....
1. **静态代理**:Spring AOP 提供了两种代理方式,一种是静态代理,另一种是动态代理。静态代理是在编译时就确定了代理类,这种代理方式通常通过实现相同接口的方式创建。然而,Spring AOP默认并不使用静态代理,...
在Spring AOP中,切面主要通过两种方式实现:代理(Proxies)和织入(Weaving)。 1. **代理**:Spring AOP支持两种类型的代理:JDK动态代理和CGLIB代理。JDK代理用于实现了接口的类,而CGLIB代理则用于没有接口或...
1. **XML配置**:在Spring的配置文件中,可以通过<aop:config>标签来定义切面,<aop:pointcut>定义切点,<aop:advisor>或<aop:aspect>定义通知。例如: ```xml <aop:config> <aop:pointcut id="myPointcut" ...
Spring的AOP支持两种代理类型:JDK动态代理和CGLIB代理。JDK动态代理适用于实现了接口的目标对象,它会为这些对象创建一个实现了相同接口的代理对象。而CGLIB代理则是在运行时为目标类生成一个子类,如果目标类没有...
Spring AOP提供了注解和XML两种方式来实现切面编程。注解方式更加简洁,易于理解和维护,适用于大多数情况。而XML配置方式则在复杂场景下更具灵活性,如需要动态调整切面配置时。在实际项目中,可以根据需求选择适合...
Spring AOP主要通过两种方式实现:JDK动态代理和CGLIB代理。 - **JDK动态代理**: - 当目标对象实现了至少一个接口时,Spring会使用JDK的java.lang.reflect.Proxy类创建一个代理对象。 - 代理对象在调用实际方法...
切面可以通过两种方式实现:基于注解(Annotation-based)和基于XML配置。在本Demo中,我们可能会看到使用注解的方式来创建切面,例如使用`@Aspect`来声明一个类作为切面,`@Before`、`@After`、`@Around`等来定义...
Spring提供了两种类型的代理:JDK动态代理和CGLIB代理。 8. **编织(Weaving)**:是指将通知插入到目标对象的过程。Spring AOP是在运行时完成的织入过程,即在程序运行时动态地添加通知。 #### 三、Spring AOP的...
Spring支持两种配置方式:XML配置和Java配置。XML配置是早期常用的,通过`<bean>`标签定义Bean及其依赖关系。Java配置则是从Spring 3.0引入的,使用@Configuration和@Bean注解,使得配置更加直观且类型安全。 4. ...