`

一、Spring AOP的简单实例

阅读更多
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 使用实例** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要组成部分,它提供了一种在不修改原有代码的情况下,通过代理方式添加额外功能的技术。这种技术使得我们...

    spring-aop实例

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种强大的方式来实现横切关注点,如日志、事务管理、安全性等,从而解耦应用程序的核心业务逻辑。在Spring AOP中,关注点被模块化为独立的“切面”...

    简单spring aop 例子

    现在,我们来看如何创建一个简单的Spring AOP例子: 1. **定义切面(Aspect)**:切面是包含通知(Advice)和切入点(Pointcut)的类。通知定义了要执行的逻辑,切入点定义了何时执行。例如,我们可以创建一个名为`...

    spring aop xml 实例

    在Java开发领域,Spring框架以其强大的功能和灵活性深受开发者喜爱,而Spring AOP(面向切面编程)则是Spring框架中的一个重要组成部分。AOP允许开发者定义“切面”,它是一种将关注点分离的方式,使得我们可以把...

    spring aop实例

    另一个文件"testaop"是一个MyEclipse项目,包含了实际的Spring AOP应用实例。这个项目可以帮助你更好地理解如何在实际项目中集成和使用Spring AOP。你可以直接导入此项目到MyEclipse中,运行并观察AOP如何工作,例如...

    spring AOP入门实例

    在这个入门实例中,我们将深入理解Spring AOP如何实现简单日志记录。 首先,AOP的核心概念包括切面(Aspect)、通知(Advice)、连接点(Join Point)、切入点(Pointcut)和织入(Weaving)。切面是AOP中的核心...

    spring aop权限小实例

    在IT行业中,Spring框架是Java企业级应用开发的首选,而Spring AOP(Aspect Oriented Programming,面向切面编程)是其核心特性之一,用于处理系统中的横切关注点,如日志、事务管理等。本实例将深入探讨如何在...

    spring 应用aop 实例

    通过上述步骤,你可以创建一个简单的Spring AOP应用,实现对特定方法的调用进行日志记录。当然,AOP的潜力远不止于此,你可以根据实际场景扩展通知类型,或者创建更复杂的切入点表达式,以实现更细粒度的控制。 在...

    Spring AOP配置实例

    通过以上步骤,你就成功地配置了一个基本的Spring AOP实例,实现了对特定方法的日志记录。当然,实际的项目中可能会有更复杂的切面逻辑和通知类型,但这个实例提供了一个很好的起点。你可以根据需要扩展和调整切点...

    spring AOP实例代码(带详细的讲解)

    在本实例代码中,我们将深入探讨Spring AOP的基本概念、核心组件以及如何在实际项目中应用。 首先,了解AOP的基本理念是理解其工作原理的关键。AOP是一种编程范式,旨在减少代码重复,提高可维护性和可读性。在传统...

    spring aop jar 包

    Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。这个"spring aop jar 包"包含了实现这一功能所需的类和接口,...

    Spring AOP完整例子

    Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许开发者在不修改源代码的情况下,通过插入切面来增强或改变程序的行为。在本教程中,我们将深入探讨Spring AOP的不同使用方法,包括定义切点、通知类型...

    Spring AOP 日志管理 实例

    Spring AOP 日志管理 实例LoggingThrowsAdvice.java

    SpringAop实例

    在这个"SpringAop实例"中,可能包含了演示如何创建和使用这两种配置方式的代码示例。文件列表中的"spring32"可能是指Spring 3.2版本的相关文件,这个版本的Spring对AOP的支持已经相当成熟。 通过学习这个实例,你...

    Spring AOP编程实例

    源码中可能包含了一个简单的Spring Boot项目,其中包含了AOP切面的实现。`.classpath`和`.project`文件是Eclipse项目的元数据,用于项目构建和设置;`src`目录包含了源代码,可能有切面类和业务逻辑;`lib`目录可能...

    spring aop学习实例

    **Spring AOP学习实例** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。AOP允许开发者定义“切面”...

    spring aop ioc实例

    在实际操作中,你可以使用Spring Boot来快速启动一个Spring应用,它已经集成了Spring AOP和IOC的功能。 总结来说,Spring的IOC和AOP提供了强大的功能,帮助我们构建松散耦合、易于测试和维护的应用。通过理解并熟练...

    spring aop 附带测试实例

    在提供的压缩包文件"springAOP"中,可能包含了以下内容: - **切面类(Aspect Class)**:包含切点和通知的Java类,可能使用了`@Aspect`注解。 - **目标类(Target Class)**:被AOP代理的对象,通常包含业务逻辑。...

    spring aop 拦截实例

    在"spring aop 拦截实例"中,我们通常会看到以下步骤: 1. **配置AOP**:在Spring配置文件中启用AOP并注册切面类。 2. **定义切面**:创建一个Java类,使用`@Aspect`注解,并定义切入点表达式和通知方法。 3. **...

Global site tag (gtag.js) - Google Analytics