做了个Spring Aop的Demo,记录一下。
在Sping Bean的基础上,增加“观众”的角色,观众在观看表演之前,要就坐,关掉手机,观看之后,鼓掌或者对表演不满,要求退票。
package com.audience; public class Audience { public void takeSeat() { System.out.println("take seat"); } public void turnOffPhone() { System.out.println("turn off phone"); } public void applaud() { System.out.println("applaud"); } public void demandRefund() { System.out.println("demand refund"); } }
配置文件,如下所示
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean id="duke" class="com.performer.service.impl.PoeticJuggler"> <constructor-arg value="15"></constructor-arg> <constructor-arg ref="sonnet"></constructor-arg> </bean> <bean id="jake" class="com.performer.service.impl.Instrumentalist" p:song = "little star" p:instrument-ref = "piano" /> <bean id="audience" class="com.audience.Audience"></bean> <bean id="sonnet" class="com.poem.service.impl.Sonnet"></bean> <bean id="piano" class="com.instrument.service.impl.Piano"></bean> <aop:config> <aop:aspect ref="audience"> <aop:pointcut expression="execution(* *.perform(..))" id="a"/> <aop:before pointcut-ref="a" method="takeSeat"/> <aop:before pointcut-ref="a" method="turnOffPhone"/> <aop:after-returning pointcut-ref="a" method="applaud"/> <aop:after-throwing pointcut-ref="a" method="demandRefund"/> </aop:aspect> </aop:config> </beans>
运行结果,如下图所示
另附源码
相关推荐
1、spring切入点 2、spring前置织入,传入参数处理 3、spring后置织入,传入参数处理 4、环绕织入,参数及返回值处理 5、返回后织入,返回值处理 6、异常织入,异常处理 maven环境下,测试用例可直接运行
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它允许程序员在不修改源代码的情况下,对应用程序的特定部分(如方法调用)进行拦截和处理。这为日志、事务管理、性能监控等提供了方便。本示例提供了一种...
在`springAop1`这个压缩包中,可能包含了一个简单的应用示例,展示了如何定义一个切面类,以及如何在该类中定义通知方法。例如,我们可能会看到一个名为`LoggingAspect`的类,其中包含了`@Before`注解的方法,用于在...
在"struts2+spring aop demo"这个项目中,我们将探讨如何结合这两个框架,利用Spring的AOP功能来记录操作日志,特别是涉及自定义参数的AOP例子。 首先,让我们了解AOP的概念。面向切面编程(Aspect Oriented ...
**Spring AOP 简介** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要模块,它扩展了传统的面向对象编程,允许开发者定义“横切关注点”(cross-cutting concerns),如日志、事务...
Spring注解AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架中的一个重要特性,它使得开发者可以在不修改原有代码的情况下,通过添加注解来实现横切关注点,如日志、事务管理等。下面我们将深入探讨...
在这个"Spring AOP DEMO"中,我们可以深入理解并实践AOP的核心概念和用法。 1. **切面(Aspect)**:在Spring AOP中,切面是封装了横切关注点的类。这些关注点通常涉及日志记录、事务管理、安全控制等。例如,我们...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理等。在本示例中,我们将深入探讨如何在Maven项目中设置和使用Spring AOP...
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员定义“切面”,这些切面封装了应用程序中的交叉关注点,如日志、事务管理、权限检查等。Spring AOP是基于代理的,它可以为普通Java对象(POJOs)...
nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator]: ...
本篇将通过注解方式探讨如何在Spring中实现AOP,基于提供的资源,我们可以看到一个实际的Demo项目结构。 首先,我们来看项目的基本结构: 1. `bin`目录:编译后的Java类文件会放在这里。 2. `.settings`目录:包含...
描述中提到的博客链接可能提供了一个具体的代码示例,但由于我们无法直接访问该链接,我将提供一个通用的AOP简介,并以Java中的Spring AOP框架为例,来解释如何创建一个简单的AOP demo。 1. **AOP基础概念**: - *...
**Spring AOP 学习笔记及实现Demo** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。AOP的主要目的...
本示例"Spring-AOP demo"旨在展示如何在Java四层架构(表示层、业务逻辑层、数据访问层和服务层)中通过注解和XML配置来实现AOP。 首先,让我们理解AOP的基本概念。AOP是一种编程范式,它允许程序员定义“切面”,...
基于注解与 XML 配置文件两种形式的 AOP demo。 基于 xml 配置文件的 aop 管理 ```xml <!-- 配置切面的bean --> <bean id="loggingAspect" class="com.jas.aop.xml.LoggingAspect"/> <aop:config> <!...
在"SpringAOP测试Demo"中,我们通常会涉及以下几个核心概念和操作: 1. **切面(Aspect)**:切面是关注点的一个模块化,它包括了连接点、通知、目标对象、织入和引入。在Spring AOP中,切面通常由一个或多个注解的...
对于这个"springAOP"的Demo,很可能包含以下内容: 1. **定义切面**:通过`@Aspect`注解创建一个类作为切面,然后在这个类中定义通知。通知通常以`@Before`, `@After`, `@Around`, `@AfterThrowing`, `@After...