`
zhaohaolin
  • 浏览: 1010899 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

AOP学习——配置Spring AOP【2】,使用annotation

 
阅读更多

使用 annotation 配置 AOP

使用 Java1.5 或以上版本,我们可以使用 annotation 设置 AOP 。这样我们不再需要往 beans.xml 里面编写 aop:config 之类的配置代码。

需要在 beans.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-2.5.xsd

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

    <!-- 使 bean 可以使用 annotation -->

    <aop:aspectj-autoproxy />   

  

   <!--

    <aop:config>

        <aop:aspect id="aspectDemo" ref="aspectBean">

            <aop:pointcut id="somePointcut"

            expression="execution(* annoaop.Component.business*(..))" />

            <aop:before pointcut-ref="somePointcut"

             method="validateUser" />

            <aop:before pointcut-ref="somePointcut"

            method="beginTransaction" />

            <aop:after-returning pointcut-ref="somePointcut"

            method="endTransaction" />

            <aop:after-returning pointcut-ref="somePointcut"

            method="writeLogInfo" />

        </aop:aspect>

    </aop:config>

    -->

    <bean id="aspectBean"

    class="annoaop.AspectBean">

    </bean>  

   

    <bean id="component"

    class="annoaop.ComponentImpl">

    </bean>

</beans>

      

       之后我们就往我们的切面类 AspectBean 添加 annotation

@Aspect

public class AspectBean {

    // 定义切入点,切入点表达式为 Component 接口的以 business 开头的所有方法,参数使用 .. 表示所有参数

    @Pointcut("execution(* annoaop.Component.business*(..))")

    public void somePointcut(){

    }

   

    @Around("somePointcut()")

    public void processBusiness(ProceedingJoinPoint joinPoint) throws Throwable{

        System.out.println(" 执行用户验证 !");

        System.out.println(" 开始事务 ");

        joinPoint.proceed();

        System.out.println(" 结束事务 ");

         System.out.println(" 书写日志信息 ");

    }

}

注意红色部分:

首先使用 @Aspect 给这个类声明为一个切面。

之后使用 @Pointcut target 声明一个切入点。

然后使用 @Around 声明环绕增强 processBusiness 。参数只有一个,就是 ProceedingJoinPoint ,这个参数就代表 somePointcut 这个方法,调用 proceed() 方法则执行切入点方法。在这个环绕增强里面,我们可以轻松地按照自己的思路配置切入点执行前或者执行后需要增加的操作。

运行主方法:

执行用户验证 !

开始事务

bussiness

结束事务

书写日志信息
分享到:
评论

相关推荐

    Spring_Annotation_AOP

    在本资料"Spring_Annotation_AOP"中,我们将深入探讨Spring框架如何利用注解实现AOP,以及其背后的原理和实践应用。 面向切面编程(AOP)是一种编程范式,旨在提高代码的可维护性和可重用性,通过将关注点分离,...

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

    Spring 2.0引入了基于注解的AOP配置,极大地简化了AOP的使用。这篇博客文章将探讨如何在Spring 2.0中使用AOP实例,特别是通过注解来实现。 首先,我们需要了解AOP的基本概念。AOP的核心是切面(Aspect),它封装了...

    spring aop实例annotation方法实现

    为了启用注解驱动的AOP,需要在Spring配置文件中添加`&lt;aop:aspectj-autoproxy&gt;`元素,或者在Java配置中使用`@EnableAspectJAutoProxy`注解。 ```xml &lt;aop:aspectj-autoproxy /&gt; ``` 或者 ```java @Configuration ...

    基于注解配置和使用spring AOP(spring mvc框架)

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种在不修改源代码的情况下,通过插入额外的代码(称为切面)来增强应用程序功能...通过注解配置,AOP的使用变得更加简洁,降低了学习和使用的门槛。

    spring学习之五“AOP概念及使用Annotation的实现”

    本篇文章将探讨Spring框架中的一个重要特性——AOP(面向切面编程)。AOP为开发者提供了在不修改源代码的情况下,对程序进行功能增强的能力,使得我们可以更方便地处理如日志记录、事务管理、权限控制等横切关注点。...

    简单spring aop 例子

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理、安全性等。本示例将简要介绍如何在Spring应用中实现AOP,通过实际的...

    基于annotation的aop实现

    在Spring中,我们可以使用XML配置或Annotation来声明切面。本文主要关注Annotation方式,因为它更直观、简洁。`@Aspect`是声明一个类为切面的Annotation,而`@Before`、`@After`、`@Around`、`@AfterReturning`和`@...

    Spring3.0.5扩展支持AOP获取HttpServletResponse

    在Spring 3.0.5中,为了在AOP中使用`HttpServletResponse`,你需要创建一个切面,该切面包含一个通知,该通知可以访问并操作`HttpServletResponse`。通常,你会在切面中定义一个环绕通知(Around Advice),因为它...

    spring中aop的简单使用(Annotation方式)

    本文将详细介绍如何在Spring中使用AOP,特别是通过注解的方式。 首先,我们需要理解AOP的基本概念。AOP的核心是切面(Aspect),它封装了特定的关注点,如日志记录或事务管理。切点(Pointcut)定义了在何时应用...

    Spring AOP面向方面编程原理:AOP概念

    2. **轻量级**:与一些需要预编译器的AOP框架不同,Spring AOP无需特殊的工具或编译步骤即可使用。这种轻量级的特性使得Spring AOP更易于学习和集成。 3. **灵活的通知模型**:Spring AOP提供了多种类型的通知,...

    利用 spring annotation AOP 反射 记录日志

    在Spring框架中,AOP主要通过代理模式实现,可以分为基于XML配置和基于注解两种方式。本例中,我们关注的是注解式AOP,它更加简洁且易于使用。 在Spring中,我们可以通过定义一个带有`@Aspect`注解的类来创建一个切...

    SpringAOP的注解配置

    Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是...在`myaop`项目中,你可以找到具体的示例代码,包括切面类、切入点表达式以及相应的注解使用,通过这些示例可以更深入地理解Spring AOP的注解配置。

    Spring——aop

    - **基于注解的AOP**:在Spring 2.5之后引入,无需编写XML配置,直接在方法上使用注解如`@Before`, `@After`, `@Around`, `@AfterThrowing`等定义通知。 ### 3. Spring AOP的核心组件 - **`@Aspect`**:标记一个类...

    spring-aop.jar

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

    Spring中的AOP不生效

    在Spring框架中,AOP可以通过基于XML的配置或者基于注解的方式实现。但在实际开发过程中,可能会遇到配置好的AOP切面不生效的问题,本文将针对这一现象进行深入分析,并提供相应的解决方案。 #### 一、问题定位 当...

    Spring Annotation简介一

    学习和熟练掌握Spring Annotation,能够帮助开发者编写更加简洁、易读的代码,同时提高开发效率。通过实践和研究Spring提供的各种注解,我们可以更灵活地构建和管理Spring应用。在实际项目中,结合源码分析,可以更...

    spring_AOP.rar_876.aop_java aop_spring_aop

    2. ch20_aop_annotation:这部分内容可能是关于使用注解来定义和实现切面的教程。 3. ch18_aoptest:可能是一些AOP的测试案例,用于演示如何在实际应用中使用和测试AOP功能。 4. ch18_aop:可能是关于AOP基础理论或...

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

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

    Spring_aop.rar_spring aop

    - **XML配置的AOP**:在Spring配置文件中定义&lt;aop:config&gt;元素,使用&lt;aop:aspect&gt;定义切面,&lt;aop:before&gt;、&lt;aop:after&gt;等定义通知,&lt;aop:pointcut&gt;定义切入点。 **4. 应用示例** 假设我们有一个`UserService`,需要...

    Spring基础:Spring AOP简单使用

    - **XML配置**:在Spring的配置文件中,可以使用&lt;aop:config&gt;标签来定义切面,&lt;aop:pointcut&gt;定义切点,&lt;aop:advisor&gt;定义通知,&lt;aop:aspect&gt;将切点和通知关联起来。 - **注解配置**:Spring 2.5引入了基于注解的...

Global site tag (gtag.js) - Google Analytics