1. 往pom.xml文件添加以下依赖:
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.7.0</version>
</dependency>
2. 在src/main/resources目录下新建spring-aop.xml文件:
<?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:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"
default-autowire="byName">
<bean id="aspect" class="com.john.spring.aop.MyAspect" />
<bean id="grace" class="com.john.spring.aop.Graceful" />
<aop:config proxy-target-class="true">
<aop:aspect ref="aspect">
<aop:before pointcut="execution(* com.john..Graceful.analogous())" method="beforeAdvice()" />
</aop:aspect>
</aop:config>
</beans>
3. MyAspect切面类:
public class MyAspect {
public void beforeAdvice() {
System.out.println("beforeAdvice() is executed!");
}
}
4. Graceful目标类:
public class Graceful {
public void analogous() {
System.out.println("Analogous() is being executed");
}
}
5. BeforeAdviceTest测试类:
public class BeforeAdviceTest {
@Test
public void test() {
AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("beans-aop.xml");
Graceful graceful = ctx.getBean("grace", Graceful.class);
graceful.analogous();
}
}
运行test()方法,输出:
beforeAdvice() is executed!
Analogous() is being executed
附:
①. <aop:config>需要添加proxy-target-class="true"属性,防止使用JDK代理导致在获取实例并转换为Graceful时报错。
②. 不管是目标类还是切面类,都要交由spring托管,并委托CGLIB改写目标类。
分享到:
相关推荐
**Spring AOP 使用实例** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要组成部分,它提供了一种在不修改原有代码的情况下,通过代理方式添加额外功能的技术。这种技术使得我们...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种强大的方式来实现横切关注点,如日志、事务管理、安全性等,从而解耦应用程序的核心业务逻辑。在Spring AOP中,关注点被模块化为独立的“切面”...
现在,我们来看如何创建一个简单的Spring AOP例子: 1. **定义切面(Aspect)**:切面是包含通知(Advice)和切入点(Pointcut)的类。通知定义了要执行的逻辑,切入点定义了何时执行。例如,我们可以创建一个名为`...
在Java开发领域,Spring框架以其强大的功能和灵活性深受开发者喜爱,而Spring AOP(面向切面编程)则是Spring框架中的一个重要组成部分。AOP允许开发者定义“切面”,它是一种将关注点分离的方式,使得我们可以把...
另一个文件"testaop"是一个MyEclipse项目,包含了实际的Spring AOP应用实例。这个项目可以帮助你更好地理解如何在实际项目中集成和使用Spring AOP。你可以直接导入此项目到MyEclipse中,运行并观察AOP如何工作,例如...
在这个入门实例中,我们将深入理解Spring AOP如何实现简单日志记录。 首先,AOP的核心概念包括切面(Aspect)、通知(Advice)、连接点(Join Point)、切入点(Pointcut)和织入(Weaving)。切面是AOP中的核心...
在IT行业中,Spring框架是Java企业级应用开发的首选,而Spring AOP(Aspect Oriented Programming,面向切面编程)是其核心特性之一,用于处理系统中的横切关注点,如日志、事务管理等。本实例将深入探讨如何在...
通过上述步骤,你可以创建一个简单的Spring AOP应用,实现对特定方法的调用进行日志记录。当然,AOP的潜力远不止于此,你可以根据实际场景扩展通知类型,或者创建更复杂的切入点表达式,以实现更细粒度的控制。 在...
通过以上步骤,你就成功地配置了一个基本的Spring AOP实例,实现了对特定方法的日志记录。当然,实际的项目中可能会有更复杂的切面逻辑和通知类型,但这个实例提供了一个很好的起点。你可以根据需要扩展和调整切点...
在本实例代码中,我们将深入探讨Spring AOP的基本概念、核心组件以及如何在实际项目中应用。 首先,了解AOP的基本理念是理解其工作原理的关键。AOP是一种编程范式,旨在减少代码重复,提高可维护性和可读性。在传统...
Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。这个"spring aop jar 包"包含了实现这一功能所需的类和接口,...
Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许开发者在不修改源代码的情况下,通过插入切面来增强或改变程序的行为。在本教程中,我们将深入探讨Spring AOP的不同使用方法,包括定义切点、通知类型...
Spring AOP 日志管理 实例LoggingThrowsAdvice.java
在这个"SpringAop实例"中,可能包含了演示如何创建和使用这两种配置方式的代码示例。文件列表中的"spring32"可能是指Spring 3.2版本的相关文件,这个版本的Spring对AOP的支持已经相当成熟。 通过学习这个实例,你...
源码中可能包含了一个简单的Spring Boot项目,其中包含了AOP切面的实现。`.classpath`和`.project`文件是Eclipse项目的元数据,用于项目构建和设置;`src`目录包含了源代码,可能有切面类和业务逻辑;`lib`目录可能...
**Spring AOP学习实例** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。AOP允许开发者定义“切面”...
在实际操作中,你可以使用Spring Boot来快速启动一个Spring应用,它已经集成了Spring AOP和IOC的功能。 总结来说,Spring的IOC和AOP提供了强大的功能,帮助我们构建松散耦合、易于测试和维护的应用。通过理解并熟练...
在提供的压缩包文件"springAOP"中,可能包含了以下内容: - **切面类(Aspect Class)**:包含切点和通知的Java类,可能使用了`@Aspect`注解。 - **目标类(Target Class)**:被AOP代理的对象,通常包含业务逻辑。...
在"spring aop 拦截实例"中,我们通常会看到以下步骤: 1. **配置AOP**:在Spring配置文件中启用AOP并注册切面类。 2. **定义切面**:创建一个Java类,使用`@Aspect`注解,并定义切入点表达式和通知方法。 3. **...