`
XTU_xiaoxin
  • 浏览: 239627 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一步一步学习spring(七)——采用声明方式实现AOP的例子

阅读更多
   上篇博客中描述了一个采用注解形式实现spring中AOP的例子,下面向大家展示一下采用
spring中声明的方式实现Spring AOP的实例。
   采用注解实现的,大家可参考该blog:
    http://xtu-xiaoxin.iteye.com/blog/630206
  
    先向大家声明,该篇博客只是给新手一个关于AOP的例子,以及方便我以后对注解实现AOP和声明实现AOP作对比,请大家原谅我贴出这种陈词滥调的东西。废话不说了,我先向大家描述该
示例。
    CommonEmployee.java和注解AOP中的类一样,没有变化,也就是说目标对象是不变的,
具体想要了解该类详细代码,请看上篇blog。

   通知类发生了一点小改变,具体通知类Logger.java如下:

 
package com.aop;

import java.util.Date;
import org.aspectj.lang.ProceedingJoinPoint;

public class Logger{

    //spring中Before通知
	public void logBefore() {
		System.out.println("logBefore:现在时间是:"+new Date());
	}
	
	//spring中After通知
	public void logAfter() {
		System.out.println("logAfter:现在时间是:"+new Date());
	}
	
	//spring中Around通知
	public Object logAround(ProceedingJoinPoint joinPoint) {
		System.out.println("logAround开始:现在时间是:"+new Date()); //方法执行前的代理处理
		Object[] args = joinPoint.getArgs();
		Object obj = null;
		try {
			obj = joinPoint.proceed(args);
		} catch (Throwable e) {
			e.printStackTrace();
		}
		System.out.println("logAround结束:现在时间是:"+new Date());  //方法执行后的代理处理
		return obj;
	}
	
}


   可以看见,上面的通知类没有引入注解了。所以,要想在spring中使用没有注解的通知类,
则必须在spring配置文件中作如下配置:

 
<bean id="employee" class="com.aop.CommonEmployee">
      <property name="name" value="good"></property>
    </bean>
    <bean id="advice" class="com.aop.Logger" />
   <aop:config >
     <aop:aspect ref="advice">
        <aop:pointcut id="pointcut" expression="execution(* com.aop.CommonEmployee.sign*(..))"/>
        <aop:before method="logBefore" pointcut-ref="pointcut"/>
        <aop:after method="logAfter" pointcut-ref="pointcut"/>
        <aop:around method="logAround" pointcut-ref="pointcut"/>
      </aop:aspect>
   </aop:config>


最后,测试类Test.java代码已在上篇博文中贴出,详细请看:
  http://xtu-xiaoxin.iteye.com/blog/630206

  最后得出测试结果如下:
  logBefore:现在时间是:Fri Apr 02 14:44:37 CST 2010
  logAround开始:现在时间是:Fri Apr 02 14:44:37 CST 2010
  good已经签到了...........
  logAfter:现在时间是:Fri Apr 02 14:44:37 CST 2010
  logAround结束:现在时间是:Fri Apr 02 14:44:37 CST 2010

 
   这是个比较简单常见的实例,对Spring AOP入门的新手来说,我觉得还是有点帮助的,最后
我将整理下注解实现AOP以及声明实现AOP直接的一些适用场景,以巩固一下自己的知识。
分享到:
评论
2 楼 XTU_xiaoxin 2010-04-07  
Object[] args = joinPoint.getArgs();  
kidd3166 写道
写是写了喇,不知道如何获取切割方法的参数呢


文章的around通知有描述,即通过 “Object[] args = joinPoint.getArgs(); "形式获得方法参数
1 楼 kidd3166 2010-04-06  
写是写了喇,不知道如何获取切割方法的参数呢

相关推荐

    征服Spring AOP—— Schema

    本文将深入探讨“Spring AOP——Schema”,这是Spring AOP的一种配置方式,通过XML schema定义切面和通知。 首先,我们需要理解AOP的基本概念。面向切面编程是一种编程范式,旨在提高软件的模块化程度,将关注点...

    征服Spring AOP—— @AspectJ

    在IT行业中,Spring框架是Java企业级应用开发的首选,而Spring AOP(面向切面编程)则是其核心特性之一,用于实现横切关注点的模块化,如日志、事务管理等。@AspectJ是Spring AOP的一种注解驱动方式,它极大地简化了...

    Spring 使用AspectJ 实现 AOP之前置通知小例子

    标题提到的"Spring 使用AspectJ 实现 AOP之前置通知小例子",指的是利用AspectJ在Spring中实现AOP的一种特定类型的通知——前置通知(Before advice)。前置通知在目标方法执行之前运行,但不会阻止方法的执行。这种...

    Spring3.1AOP简单例子

    AOP是Spring框架的强大特性,它允许我们在应用程序中实现关注点的分离,使得我们可以将横切关注点(如日志、事务管理、性能监控等)与业务逻辑分离,提高代码的可读性和可维护性。 首先,了解AOP的基本概念是至关...

    spring之AOP(动态代理)

    当目标对象没有实现接口时,Spring会自动选择CGLIB作为默认的代理方式。 在Spring Boot项目中,配置和使用AOP相对简单。首先,我们需要引入Spring AOP和AspectJ的依赖,这通常在pom.xml或build.gradle文件中完成。...

    学习Spring笔记_AOP_Annotation实现和XML实现

    本笔记主要聚焦于Spring框架中的重要概念——面向切面编程(AOP),并对比讲解了两种实现方式:注解(Annotation)实现和XML配置实现。AOP允许我们在程序执行过程中插入自定义的行为,如日志记录、事务管理等,使得...

    Spring boot——@DeclareParents例子

    在Spring Boot框架中,`@DeclareParents`注解是AOP(面向切面编程)的一部分,主要用于实现动态代理。AOP允许我们在不修改原有代码的情况下,通过“切面”来增强或修改程序的行为,这对于日志记录、事务管理等横切...

    springioc和spring aop

    Spring框架是Java开发中不可或缺的一部分,它通过提供两种核心特性——控制反转(IoC)和面向切面编程(AOP)来简化应用的构建。理解并掌握这两种技术对于任何Java开发者来说都至关重要。 **控制反转(IoC)**,也...

    模拟实现spring IOC AOP的例子

    在本文中,我们将深入探讨如何模拟实现Spring框架中的两个核心特性:Inversion of Control(IoC,控制反转)和Aspect-Oriented Programming(AOP,面向切面编程)。这两个概念在现代Java应用开发中占据着重要的地位...

    spring-aop.jar

    《深入解析Spring AOP框架——以spring-aop.jar为例》 Spring AOP,全称Aspect Oriented Programming(面向切面编程),是Spring框架的核心部分之一,它为Java开发者提供了强大的面向切面的编程能力。本文将围绕...

    spring AOP 小例子

    Spring AOP,全称Aspect Oriented Programming(面向切面编程),是Spring框架的重要特性之一,它为应用程序提供了声明式的企业级服务,如日志、事务管理等。在本示例中,我们将通过两个小例子来深入理解Spring AOP...

    Spring源码工程,可以断点调试,外加一个AOP的小例子(不带JAR包)

    Spring AOP支持两种实现方式:基于代理的AOP和基于注解的AOP。基于代理的AOP通常用于接口实现类,而基于注解的AOP则更为直观和便捷,只需在方法上添加相应的注解即可定义切面。 在提供的源码工程中,AOP小例子可能...

    spring security 2.0 的简单配置使用(补)——用aop控制method级权限

    在本文中,我们将深入探讨如何在Spring Security 2.0版本中配置并使用AOP(面向切面编程)来实现方法级别的权限控制。首先,我们需要理解Spring Security的基础概念。 1. **Spring Security基本架构** Spring ...

    SPRING学习小例子

    本篇将深入解析“SPRING学习小例子”,涵盖Spring的核心特性——依赖注入(DI),事务管理,面向切面编程(AOP)以及数据库操作。 一、依赖注入(Dependency Injection,简称DI) 依赖注入是Spring的核心特性,它...

    spring AOP myeclipse 完整代码

    而AOP通过将这些关注点抽取到单独的模块——切面(Aspect)中,实现了代码的解耦和复用。 在MyEclipse中集成Spring AOP,首先需要创建一个Spring项目,并在项目中引入Spring的相关库,包括`spring-aop.jar`和`...

    SpringAOP例子

    《SpringAOP实战示例——基于Spring in action 2ed chapter4》 Spring AOP(面向切面编程)是Spring框架的重要组成部分,它允许我们通过分离关注点来编写更整洁、可维护的代码。在"Spring in action 2nd edition"的...

    Spring+SpringMVC+Mybatis框架整合例子——亲测可用.zip

    这个压缩包中的"SSM整合例子——亲测可用"应该是包含了上述所有配置和实现的源代码,可以作为学习和参考的模板。通过阅读和理解这个例子,开发者可以快速掌握SSM框架的整合过程,提升自己的Java Web开发能力。

    7Spring AOP盗梦空间之二——获得返回值AfterReturnning

    在本篇博文中,我们将深入探讨Spring AOP(面向切面编程)中的一个重要概念——AfterReturning通知,这是Spring框架提供的一种强大的功能,允许我们在方法成功执行并返回后执行额外的操作。我们将通过源码分析和实际...

    spring 2.0使用AOP实例(基于Annotation的配置方式)

    以上就是Spring 2.0中使用AOP的一个基本实例,基于注解的配置方式使得AOP的使用更加直观和简洁。在实际开发中,我们可以根据需求灵活地定义切面和通知,以实现各种横切关注点的功能。 通过阅读提供的压缩包中的`src...

Global site tag (gtag.js) - Google Analytics