`
shenshuibomb
  • 浏览: 25288 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用Spring注解方试实现AOP1--前后通知与后置通知

阅读更多

配置文件的写法

<?xmlversion="1.0"encoding="UTF-8"?>

 

<!--

-ApplicationcontextdefinitionforJPetStore'sbusinesslayer.

-ContainsbeanreferencestothetransactionmanagerandtotheDAOsin

-dataAccessContext-local/jta.xml(seeweb.xml's"contextConfigLocation").

-->

<beansxmlns="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-2.5.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">

<aop:aspectj-autoproxy/>

<bean id="Interceptor" class="com.sszd.aop.DbManage"/>

<bean id="DBBean" class="com.sszd.db.DbOpretor"/>

</beans>

 

首先编写一个方法类

package com.sszd.db;

 

public class DbOpretor{


publicvoidinsert(Stringsql)//带参数

{

System.out.println("insert方法(带参数)");

}

public int select(intid)//带返回值

{

  System.out.println("select方法(有返回值)");

  return id;

}

 

public void commit()

{

 System.out.println("commit方法");

}

}

创建一个切面类


@Aspect

public class DbManage{


@Pointcut("execution(*com.sszd.db..*.*(..))")

public void perform(){}

 

@Before("perform()")

public void preMangeNoargs()

{

System.out.println("前置通知无参数");

}

@AfterReturning("perform()")//无返参数

publicvoidafterMange()

{

System.out.println("后置通知无参数");

}

}

我这里用Junit做测试

package com.sszd.test;

import junit.framework.TestCase;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.sszd.db.DbOpretor;

public class AOPTest extends TestCase {

public void testAop()
{
ApplicationContext cxt = new ClassPathXmlApplicationContext("ApplicationContext.xml");
DbOpretor db = (DbOpretor)cxt.getBean("DBBean");
db.commit();
}
}

 

此外还可以对有参数以及有返回值的方法进行拦截

insert方法

对比上一个DbManage类

@Aspect
public class DbManage {
@Pointcut("execution(* com.sszd.db..*.*(..))")
public void perform(){}

@Before("perform() && args(sql)")//带参数
public void preMangeArgs(String sql)
{
System.out.println("前置通知带参数");
System.out.println("DbManage中接收的SQL:"+sql);

}

@AfterReturning(pointcut="perform()",returning="result")//有返回值
public void afterMange(int result)
{
System.out.println("后置通知");
System.out.println("DbOpretor->select方法返回原值:"+result+"\n");

}
}

继续Junit测试:

package com.sszd.test;

import junit.framework.TestCase;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.sszd.db.DbOpretor;

public class AOPTest extends TestCase {

public void testAop()
{
ApplicationContext cxt = new ClassPathXmlApplicationContext("ApplicationContext.xml");
DbOpretor db = (DbOpretor)cxt.getBean("DBBean");
//db.commit();
db.insert("insert SQL");
db.select(2);
}
}

运行它:




 


分享到:
评论

相关推荐

    Spring学习笔记(15)----使用Spring的注解方式实现AOP

    在本篇Spring学习笔记中,我们将深入探讨如何利用Spring框架的注解方式来实现面向切面编程(AOP)。AOP是一种编程范式,它允许我们定义横切关注点,如日志、事务管理等,然后将这些关注点模块化并插入到应用程序的多...

    spring aop注解方式、xml方式示例

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种强大的方式来实现横切关注点,如日志、事务管理、性能监控等,而无需侵入业务代码。下面将详细介绍Spring AOP的注解方式和XML配置方式。 ### ...

    使用Spring的注解方式实现AOP

    本篇文章将深入探讨如何通过注解方式在Spring中实现AOP。 首先,我们需要了解AOP的基本概念。AOP是一种编程范式,它允许程序员定义“切面”,这些切面包含了一组相关操作,可以在多个对象或方法上统一实施。Spring ...

    Spring基于注解实现AOP

    本篇文章将深入探讨如何在Spring中通过注解实现AOP。 首先,了解AOP的基本概念。面向切面编程是一种编程范式,它允许程序员定义“切面”,这些切面包含了跨越多个对象的行为或责任。切点是这些行为插入到主业务逻辑...

    Spring-AOP(前置/后置/环绕)通知的例子

    在这个例子中,我们将深入探讨Spring AOP中的前置通知、后置通知以及环绕通知的实现方式。 前置通知(Before Advice)在目标方法执行前触发,通常用于执行验证、初始化等操作。在Spring AOP中,我们可以使用`@...

    Spring 基于注解方式实现AOP

    下面我们将深入探讨如何使用注解来实现Spring AOP。 首先,我们需要了解AOP的基本概念。AOP是一种编程范式,旨在将横切关注点(如日志、事务管理、安全性等)从核心业务逻辑中分离出来。在Spring中,切面由通知...

    spring的Aop中的前置通知,后置通知以及环绕通知简单代码

    它们可以通过实现`org.springframework.aop.AfterReturningAdvice`和`org.springframework.aop.ThrowsAdvice`接口来创建,或者使用`@AfterReturning`和`@AfterThrowing`注解。 ```java @Aspect public class ...

    草稿:SSM整合-用springaop-demo01实现了注解AOP,SSM-MybatisOneForOne-demo01实现

    总结来说,"springaop-demo01"展示了如何在Spring框架中使用注解AOP进行切面编程,实现对业务代码的透明增强;而"SSM-MybatisOneForOne-demo01"则展示了在SSM整合中,如何通过MyBatis的一对一映射处理两个表之间的...

    Spring注解方式实现AOP demo

    总结来说,这个Spring AOP注解方式的Demo展示了如何通过简单的注解定义切面、切点和通知,实现对业务逻辑的无侵入式增强。这种方式使得代码更简洁、可读性更强,同时也充分利用了Spring框架的优势。对于理解和实践...

    Spring学习笔记(16)----使用Spring配置文件实现AOP

    `&lt;aop:advisor&gt;`则将`loggingAdvice`这个通知与`serviceMethods`切点关联起来,意味着在匹配到的方法执行前后,`LoggingAspect`类中的通知将会被调用。 接下来,我们要创建一个切面类`LoggingAspect`,它包含了具体...

    spring AOP注解的应用1

    本篇主要探讨的是如何利用Spring AOP的注解来实现这些功能,包括前置通知、后置通知、返回通知和异常通知。 ### 前置通知(Before通知) 前置通知在目标方法执行之前运行。在Spring AOP中,我们使用`@Before`注解...

    spring注解&XML配置AOP

    Spring注解AOP允许我们在不编写XML配置的情况下实现AOP功能。以下是一些关键的注解: 1. `@Aspect`:标记一个类为切面,这个类可以包含多个通知方法。 2. `@Before`:前置通知,方法会在目标方法执行前被调用。 3...

    使用Spring配置文件实现AOP

    在Spring框架中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种强大的设计模式,它允许我们定义横切关注点,如日志、事务管理、权限检查等,然后将这些关注点与核心业务逻辑解耦。这篇教程将详细讲解...

    注解实现AOP通知

    在Spring中,注解使得AOP的使用更加简洁,避免了XML配置的繁琐。本篇文章将详细讲解五种主要的AOP通知注解及其应用。 1. 前置通知(@Before):在目标方法执行之前运行。例如,可以用于进行参数校验或开启事务。使用`...

    Spring通过注解实现AOP

    本篇文章将详细探讨如何通过注解在Spring中实现AOP。 首先,我们需要理解AOP的基本概念。AOP的核心思想是将那些分散在各个业务逻辑中的共同行为,如日志记录、事务处理、性能监控等,抽取出来,形成独立的模块,...

    Spring 前置通知和后置通知

    在Spring AOP中,`@After`注解用于实现后置通知。后置通知可以用于做一些资源清理工作,或者记录方法执行时间等。例如: ```java @Aspect public class LoggingAspect { @After("execution(* com.example.service....

    spring-aop-4.0.0.RELEASE

    《Spring AOP 4.0.0.RELEASE:深度解析与应用》 Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它为开发者提供了声明式事务管理、日志记录、权限控制等核心功能。在4.0.0....

    spring注解aop配置详解

    通过以上介绍,我们可以看到Spring的注解AOP配置是如何让代码更简洁、更易于理解和维护的。结合实际的项目需求,我们可以灵活地使用这些注解来实现各种企业级功能,如日志、事务控制等,从而提高代码的复用性和模块...

    Spring AOP--日志管理

    4. **织入通知**:使用`@Before`, `@After`, `@AfterReturning`, `@AfterThrowing` 或 `@Around` 注解将通知与匹配的连接点关联起来。 5. **配置AOP**:在Spring配置文件中启用AOP并注册切面,或者在使用Java配置时...

    使用Spring的注解方式实现AOP实例

    使用Spring的注解方式实现AOP实例 使用Spring的注解方式实现AOP实例是指通过使用Spring框架提供的注解方式来实现Aspect-Oriented Programming(面向方面编程)的功能。AOP是面向对象编程的一种补充,能够将跨越多个...

Global site tag (gtag.js) - Google Analytics