实践了《指南》中的例子165页到169页,最后补充一个Action,
public class AOPMethodCostTimeAction extends ActionSupport {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
WebApplicationContext wac = this.getWebApplicationContext();
ITest dao =(ITest)wac.getBean("myAOPProxyFactory");
dao.doTest();
dao.executeTest();
return mapping.findForward("success");
}
}
具体代码已经放到gmail邮箱了。
仅仅从这个例子总结一下:
1,配置文件中需要
<!-- aop test-->
<bean id="myPointcutAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice">
<ref local="MyInterceptor"/>
</property>
<property name="patterns">
<list>
<value>.*do.*</value>
<value>.*execute.*</value>
</list>
</property>
</bean>
<!-- user by PointcutAdvisor -->
<bean id="MyInterceptor" class="srx.test.interceptor.MethodTimeCostInterceptor"></bean>
<!-- proxy factory user by Actoin -->
<bean id="myAOPProxyFactory" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>srx.test.interfaces.ITest</value>
</property>
<property name="target">
<ref local="test"/>
</property>
<property name="interceptorNames">
<value>myPointcutAdvisor</value>
</property>
</bean>
<!-- the dao bean be proxyed-->
<bean id="test" class="srx.test.impl.test"></bean>
2,struts-config.xml
<!-- AOP test , this is a action call two function ,and pring every method proced cost time-->
<action path="/methodcost" type="srx.test.struts.action.AOPMethodCostTimeAction">
<forward name="success" path="/WEB-INF/jsp/srx/test/aop/success.jsp"/>
</action>
使用动态代理,我本来有ITest接口,及其实现类test。以及使用test的Action。现在,我想测试test
种方法的调用时间,我需要怎么做呢?
我只需要多定义三个Bean,myPointcutAdvisor,MyInterceptor,myAOPProxyFactory。
三者的依赖关系
myAOPProxyFactory [ myPointcutAdvisor [ MyInterceptor ] ]
其中advice定义和具体的Spring advice类有关系。
待续。
分享到:
相关推荐
现在,我们来看如何创建一个简单的Spring AOP例子: 1. **定义切面(Aspect)**:切面是包含通知(Advice)和切入点(Pointcut)的类。通知定义了要执行的逻辑,切入点定义了何时执行。例如,我们可以创建一个名为`...
Spring 2.5 AOP(面向切面编程)...综上所述,Spring 2.5 AOP例子展示了如何利用类扫描和XML配置实现面向切面编程。通过理解这些概念和实践,我们可以更高效地管理和维护我们的应用程序,使其更具可扩展性和可维护性。
在Spring AOP的例子中,我们可能会创建一个`@RunWith(SpringJUnit4ClassRunner.class)`标记的测试类,以利用Spring的测试支持。在测试方法中,可以注入需要的bean,然后调用方法来触发AOP代理。这样,通知将在适当的...
在这个例子中,`LoggingAspect`是一个切面,`logBefore`方法是一个前置通知,将在匹配的方法执行前运行。 除了这些基本的通知类型,还有`@AfterReturning`(后返回通知)、`@AfterThrowing`(异常抛出通知)和`@...
在上面的例子中,我们定义了一个切点,匹配`com.example.service`包下的所有方法。 4. **使用代理**:Spring会根据需要自动创建代理对象来处理通知。默认情况下,Spring使用基于Java的代理,但对于需要在静态方法或...
在本教程中,我们将深入探讨这两个概念以及如何在MyEclipse环境中使用它们。下面将详细阐述Spring的IOC和AOP,以及如何在实际项目中实现和配置。 ### Spring IOC(Inversion of Control,控制反转) 控制反转是一...
通过这个例子,你可以学习到如何在Spring.NET环境中实现AOP,理解动态代理的工作原理,并掌握如何在实际项目中应用AOP来提高代码的灵活性和可维护性。这将有助于你编写更加模块化、易于维护的软件系统。
在这个例子中,`Aop`类定义了一个切点表达式`execution(* com.incon.project.zkb.qxgl.qxbmxxxg.service.*.*(..))`,它匹配`com.incon.project.zkb.qxgl.qxbmxxxg.service`包下的所有类的所有方法。然后,我们使用`@...
在"spring aop例子"中,我们可以看到`src`目录,这个通常包含Java源代码,其中可能包含了切面类、通知方法以及使用了切面的业务逻辑类。`extjstest`可能是测试目录,用于验证AOP配置和功能是否正确工作。`QQ五笔截图...
5. **启用AOP**:为了使AOP生效,我们需要在Spring配置中启用AOP支持,这可以通过在XML配置中添加`<aop:aspectj-autoproxy>` 或者在Java配置中使用`@EnableAspectJAutoProxy` 注解来实现。 在"Spring3.1.0Demo2-AOP...
这篇博客文章将探讨如何在Spring 2.0中使用AOP实例,特别是通过注解来实现。 首先,我们需要了解AOP的基本概念。AOP的核心是切面(Aspect),它封装了横切关注点,即那些跨越多个对象的行为或责任。在Spring中,切...
在这个例子中,我们定义了一个名为`loggingAspect`的切面,包含一个前置通知和一个后置通知。通知由`LoggingAdvice`类提供,该类实现了具体的日志记录逻辑。切点`businessMethods`则定义了拦截的服务层的所有方法。 ...
在这个"SpringAOP的例子"中,我们将深入探讨如何在Eclipse环境下利用Spring AOP和动态代理来实现这些功能。 首先,让我们理解什么是AOP。AOP是一种编程范式,旨在减少代码的重复性和增强可维护性。在传统的OOP中,...
在这个例子中,`@Around`注解定义了一个环绕通知,它将在匹配方法执行之前和之后运行。`execution(* com.example.service.*.*(..))`是一个切入点表达式,用于定义要拦截的方法。 最后,Spring会自动扫描并应用所有...
通过理解并实践这个 Spring AOP 注解的例子,你可以更深入地了解如何在实际项目中使用 AOP 来提升代码的可维护性和复用性。无论是日志记录、性能监控还是事务管理,AOP 都能帮助我们编写更加整洁、模块化的代码。
在上述例子中,运行时织入通过Spring的ApplicationContext来实现。 5. **代理(Proxy)**:Spring AOP通过动态代理机制创建目标对象的代理,代理对象在调用目标方法时会自动插入切面逻辑。在Java项目中,Spring可以...
在IT行业中,Spring框架是Java开发中的一个核心组件,尤其在企业级应用开发中占据了重要地位。本压缩包"helloAop.zip"包含...通过学习和实践这些例子,开发者可以更好地掌握Spring框架,提高其在实际项目中的应用能力。
在这个例子中,`MyAspect`类定义了一个切面,`logBefore`方法作为前置通知在执行`com.example.service`包下的所有方法前运行,`scheduledTask`方法是一个定时任务,每5秒执行一次。 通过结合Spring AOP和定时任务,...
- SpringAOP:这个例子将演示如何在Spring中实现AOP。可能包含了一些切面、通知和切入点的定义,以及如何将它们应用到目标对象上。这将帮助你理解AOP的工作原理以及如何在实际项目中使用。 通过这三个例子,你可以...