I have give the comment in xml file:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<description>Quick AOP Start for Spring</description>
<!-- AOP of audience -->
<!-- DefaultPointcutAdvisor bean -->
<bean id="audienceAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
<!-- both values of advice below equivalent,one method implements MethodInterceptor,another method is implements MethodBeforeAdvice,AfterReturningAdvice,ThrowsAdvice,annotate one of them-->
<!--<property name="advice" ref="AudienceAroundAdvice"></property>-->
<property name="advice" ref="AudienceAdvice"></property>
<!-- define point cut of advisor ,one is aspectJ pointcut,another is regular pointcut,annotate one of them-->
<!--<property name="pointcut" ref="PerformencePointcutAspectJ"></property>-->
<property name="pointcut" ref="PerformencePointcut"></property>
</bean>
<!-- AspectJExpressionPointcutAdvisor bean -->
<bean id="audienceAdvisorAspectJ" class="org.springframework.aop.aspectj.AspectJExpressionPointcutAdvisor">
<!--<property name="advice" ref="AudienceAroundAdvice"></property>-->
<property name="advice" ref="AudienceAdvice"></property>
<!-- define expression of advisor -->
<property name="expression" value="execution(* *.perform(..))"></property>
</bean>
<!-- create advice of audience by implements MethodBeforeAdvice,AfterReturningAdvice,ThrowsAdvice-->
<bean id="AudienceAdvice" class="com.spring.aop.AudienceAdvice">
<property name="audience" ref="audience"></property>
</bean>
<!-- create around advice of audience by implements MethodInterceptor-->
<bean id="AudienceAroundAdvice" class="com.spring.aop.AudienceAroundAdvice">
<property name="audience" ref="audience"></property>
</bean>
<!-- audience bean -->
<bean id="audience" class="com.spring.aop.Audience"></bean>
<!-- regular pointcut-->
<bean id="PerformencePointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut">
<property name="pattern" value=".*perform"></property>
</bean>
<!-- AspectJ pointcut-->
<bean id="PerformencePointcutAspectJ" class="org.springframework.aop.aspectj.AspectJExpressionPointcut">
<property name="expression" value="execution(* *.perform(..))"></property>
</bean>
<!-- parent base proxyBean ,it is convenient to extends-->
<bean id="advisorBase" class="org.springframework.aop.framework.ProxyFactoryBean" abstract="true">
<!-- both values of interceptorNames below equivalent,one method is using AspectJ,another method
is classic spring proxy-based AOP,annotate one of them-->
<!-- <property name="interceptorNames" value="audienceAdvisorAspectJ"></property> -->
<property name="interceptorNames" value="audienceAdvisor"></property>
<!-- proxy interface-->
<property name="proxyInterfaces" value="com.performence.Performer"></property>
</bean>
<!-- inherit from advisorBase -->
<bean id="duke" parent="advisorBase">
<!-- target of ProxyFactoryBean -->
<property name="target" ref="dukeTarget"></property>
</bean>
<bean id="dukeTarget" class="com.performence.PoeticJuggler" >
<constructor-arg ref="poem"/>
<property name="song" value="Without U" />
</bean>
<bean id="poem" class="com.performence.LovePoem" ></bean>
<!-- inherit from advisorBase -->
<bean id="stevie" parent="advisorBase">
<property name="target" ref="stevieTarget"></property>
</bean>
<bean id="stevieTarget" class="com.performence.PoeticJuggler" >
<constructor-arg ref="poem"/>
<property name="song" value="Lady GaGa" />
</bean>
</beans>
分享到:
相关推荐
Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。这个"spring aop jar 包"包含了实现这一功能所需的类和接口,...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理、安全性等。本示例将简要介绍如何在Spring应用中实现AOP,通过实际的...
Spring AOP,全称为Aspect Oriented Programming,是面向切面编程的一种编程范式,它是对传统的面向对象编程(OOP)的一种补充。在OOP中,核心是对象,而在AOP中,核心则是切面。切面是关注点的模块化,即程序中的...
在Spring XML配置中,我们可以使用`<aop:config>`元素来定义切点表达式,然后使用`<aop:aspect>`元素来声明切面,并将通知方法与切点关联起来。此外,还可以使用注解驱动的配置,通过`@EnableAspectJAutoProxy`注解...
Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的一个重要模块,它通过提供声明式的方式来实现面向切面编程,从而简化了应用程序的开发和维护。在Spring AOP中,我们无需深入到每个...
Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的重要组成部分,它为Java应用程序提供了声明式的企业级服务,如事务管理、性能监控等。在Spring AOP中,我们可以通过定义切面(Aspect...
spring-aop-1.1.1.jar spring-aop-1.2.6.jar spring-aop-1.2.9.jar spring-aop-2.0.2.jar spring-aop-2.0.6.jar spring-aop-2.0.7.jar spring-aop-2.0.8.jar spring-aop-2.0.jar spring-aop-2.5.1.jar spring-aop-...
- 在`<aop:config>`标签内定义切面,`<aop:pointcut>`定义切入点,`<aop:advisor>`定义通知。 - `<aop:aspect>`标签用于定义完整的切面,包括切入点和通知。 - **注解配置**: - 使用`@Aspect`注解定义切面类,`...
Spring AOP 是一种面向切面编程的技术,它允许我们在不修改源代码的情况下,对应用程序的特定部分(如方法调用)进行增强。在 Spring 中,AOP 的实现主要依赖于代理模式,有两种代理方式:JDK 动态代理和 CGLIB 动态...
### Spring AOP面向方面编程原理:AOP概念详解 #### 一、引言 随着软件系统的日益复杂,传统的面向对象编程(OOP)逐渐暴露出难以应对某些横切关注点(cross-cutting concerns)的问题。为了解决这一挑战,面向方面编程...
一、适合人群 1、具备一定Java编程基础,初级开发者 2、对springboot,mybatis,mysql有基本认识 3、对spring aop认识模糊的,不清楚如何实现Java 自定义注解的 ...4、spring boot,mybatis,druid,spring aop的使用
基于注解实现SpringAop基于注解实现SpringAop基于注解实现SpringAop
Spring AOP,即Spring的面向切面编程模块,是Spring框架的重要组成部分,它允许开发者在不修改源代码的情况下,对程序进行横切关注点的处理,如日志、事务管理等。实现这一功能,主要依赖于三个核心的jar包:aop...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点,如日志、事务管理等。在Java应用中,AOP通过代理模式实现了切面编程,使得我们可以将业务逻辑...
在Spring的XML配置文件中,这可以通过`<aop:config>`标签来完成,或者在Java配置类中使用`@EnableAspectJAutoProxy`注解。然后,将切面类通过`<bean>`标签或者`@Component`注解进行注册。 总的来说,这个Spring AOP...
**Spring AOP 配置实现详解** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它允许我们通过分离关注点来简化应用程序的开发。在传统的面向对象编程中,业务逻辑与日志记录...
XML配置通常在Spring的配置文件中完成,如`<aop:config>`标签用于开启AOP支持,`<aop:aspect>`定义切面,`<aop:pointcut>`定义切点,`<aop:advisor>`定义通知。注解方式则更简洁,可以使用`@Aspect`、`@Before`、`@...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它允许程序员在不修改源代码的情况下,对应用程序的特定部分(如方法调用)进行拦截和处理。这为日志、事务管理、性能监控等提供了方便。本示例提供了一种...
Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的重要组成部分,它为应用程序提供了声明式的企业级服务,如日志、事务管理等。在本项目中,我们将探讨如何通过配置文件实现Spring AOP...
Spring AOP 和 Spring IOC 是 Spring 框架的两个核心组件,它们对于任何基于 Java 的企业级应用开发都至关重要。Spring AOP(面向切面编程)允许开发者在不修改源代码的情况下,通过“切面”来插入新的行为或增强已...