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

AOP学习——配置Spring AOP【1】,使用xml文件

 
阅读更多

使用 Spring AOP ,除了 spring.jar 这个包外,还需要 aspectjweaver.jar 。将这两个 jar 包加到类路径就可以了。

一般使用 Spring AOP 可以通过 xml 文件或者 annotation 实现 AOP 的配置。

用一个简单的例子说明。

首先有一个业务接口 Component

public interface Component {

    public void business();

    public void dobusiness();

}

还有它的实现类 ComponentImpl

public class ComponentImpl implements Component{

    public void business() {

        System.out.println("bussiness");

    }

    public void dobusiness() {

        System.out.println("do business");

    }

}

 

现在我要做一个切面 AspectBean:

public class AspectBean {

public void validateUser()

{

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

}

public void writeLogInfo()

{

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

}

public void beginTransaction()

{

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

}

public void endTransaction()

{

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

}

}

在调用业务接口方法之前,我要执行 validateUser beginTransaction 方法,调用玩业务接口方法之后,执行 endTransaction writeLogInfo 方法。

另外,我们发现,这个切面是一个 POJO ,易于测试和方便移植。

 

还有一个主类使用这个接口:

public class Main {

    public static void main(String[] args) {

        ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");

        Component component=(Component)ctx.getBean("component");

        component.business();

    }

}

 

好,现在通过 xml 文件和 annotation 配置 Spring AOP

 

使用 xml 文件配置 AOP

创建一个 xml 文档 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" >  

  

    <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>

 

红色部分就是配置 AOP 的地方。

所有的切面都放在 aop:config 标签里面。

使用 aop:aspect 声明一个切面 aspectDemo

使用 aop:pointcut 声明一个切入点, expression 属性需要通过切入点表达式告诉 spring 你的 target 是什么。

切入点表达式的使用规则:

execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern? )

? 号的部分表示可省略的, modifers-pattern 表示修饰符如 public protected 等, ret-type-pattern 表示方法返回类型, declaring-type-pattern 代表特定的类, name-pattern 代表方法名称, param-pattern 表示参数, throws-pattern 表示抛出的异常。在切入点表达式中,可以使用 * 来代表任意字符,用 .. 来表示任意个参数。

例子里面 expression="execution(* annoaop.Component.business*(..))" 表示匹配 annoaop.Component 接口里面以 business 开头的所有方法,参数任意,返回类型任意。

注意: spring 会根据 xml 文件里你声明的增强顺序来执行,假如你设置:

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

            method=" writeLogInfo" />

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

            method="endTransaction " />

则输出为

书写日志信息

结束事务

而不是原来的

结束事务

书写日志信息

 

运行主方法:

执行用户验证 !

开始事务

bussiness

结束事务

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

相关推荐

    使用Spring配置文件实现AOP

    在Spring的XML配置文件中,我们可以创建一个`&lt;aop:config&gt;`元素,并在其内部定义`&lt;aop:advisor&gt;`来创建Advisor。Advisor的`advice-ref`属性用于指定通知bean的ID,`pointcut-ref`属性用于指定切点bean的ID。 2. ...

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

    下面将详细介绍Spring AOP的注解方式和XML配置方式。 ### 注解方式 #### 1. 定义切面(Aspect) 在Spring AOP中,切面是包含多个通知(advisors)的类。使用`@Aspect`注解标记切面类,例如: ```java @Aspect ...

    SpringAop xml方式配置通知

    在Spring框架中,AOP通过代理实现,可以使用XML配置或注解进行配置。本篇文章主要聚焦于Spring AOP的XML配置通知。 **一、AOP概念解析** 1. **切面(Aspect)**:一个关注点的模块化,例如事务管理就是一个切面。...

    Spring之AOP配置文件详解

    ### Spring之AOP配置文件详解 #### 一、前言 在Java开发中,Spring框架因其强大的功能和灵活的配置而被广泛应用于企业级应用的开发。其中,面向切面编程(Aspect Oriented Programming,简称AOP)是Spring框架的...

    spring对AOP的支持(使用Spring的配置文件来演示)

    本篇文章将深入探讨如何使用Spring的配置文件来设置和使用AOP。 首先,我们需要了解AOP的基本概念。AOP的核心是切面(Aspect),它封装了横切关注点。切点(Join Point)是程序执行过程中的某个特定位置,如方法...

    征服Spring AOP—— Schema

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

    Spring_AOP_XML配置

    **Spring AOP XML配置**是Spring框架中一种重要的面向切面编程(Aspect-Oriented Programming,简称AOP)实现方式,允许开发者定义“横切关注点”,如日志、事务管理等,这些关注点可以独立于业务代码进行,提高代码...

    spring aop 学习笔记

    - **AOP配置**:可以通过XML配置或注解方式声明切面、切点和通知。 3. **注解驱动的AOP** - `@Aspect`:标记一个类为切面。 - `@Before`:前置通知,方法在目标方法之前执行。 - `@After`:后置通知,无论目标...

    Spring.net(AOP通过配置文件配置)

    **Spring.NET AOP 通过配置文件配置** Spring.NET 是一个开源的 .NET 框架,它提供了依赖注入(DI)和面向切面编程(AOP)的能力。在本篇内容中,我们将深入探讨如何使用配置文件来设置 Spring.NET 的 AOP 功能。 ...

    spring-aop标签和配置文件两种方式实例

    本实例将探讨如何在Spring中使用XML配置文件和AOP标签来实现这一功能,特别是针对Spring 2.5及以上版本。 首先,我们来看XML配置文件方式。在Spring中,AOP可以通过`&lt;aop:config&gt;`标签来配置。下面是一个基本的AOP...

    Spring_AOP_学习小结 Spring_AOP_学习小结 Spring_AOP_学习小结

    在Spring 2.0及更高版本中,推荐使用AspectJ注解或XML配置定义切入点表达式。 总结,Spring AOP提供了一种优雅的方式,让我们能够分离关注点,实现代码的模块化,提高可维护性和复用性。理解并熟练运用这些概念和...

    spring-aop-jar

    在Spring AOP中,切面可以通过注解或XML配置来定义。 - 连接点(Join Point):连接点是程序执行过程中的一个特定点,例如方法的调用或字段的访问。 - 切入点(Pointcut):切入点是连接点的集合,定义了切面将在...

    springAop的配置实现

    Spring AOP通过XML配置文件提供了灵活的方式来定义和管理切面、切入点和通知,使得我们可以轻松地在应用程序中实现横切关注点的解耦。了解和掌握Spring AOP的配置实现,有助于提升我们构建松散耦合、易于维护的系统...

    spring-boot aop

    1. **引入依赖**:在`pom.xml`或`build.gradle`文件中添加Spring AOP和AspectJ的依赖。对于Maven,添加以下依赖: ```xml &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-starter-aop ``` 2. ...

    用xml配置的方式进行SpringAOP开发

    通过以上步骤,我们就成功地使用XML配置完成了Spring AOP的开发。这种方式虽然相对繁琐,但它清晰地展示了AOP的各个组成部分,有利于理解和学习。然而,在实际开发中,更常见的是使用注解驱动的AOP,因为其更简洁且...

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

    1. **启用AOP代理**:在Spring配置文件中,通过&lt;aop:aspectj-autoproxy/&gt;元素启用基于注解的AOP。 ```xml &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...

    spring aop xml 实例

    本实例主要探讨的是使用XML配置的方式来实现AOP。XML配置虽然相比注解方式略显繁琐,但它提供了更大的灵活性,尤其是在需要对多个类或方法应用相同通知(Advice)时。 首先,我们需要在Spring的配置文件中启用AOP...

    spring学习之六“AOP使用spring静态配置文件的实现”

    在Spring的XML配置文件中,我们需要定义`&lt;aop:config&gt;`元素来开启AOP支持,然后创建`&lt;aop:aspect&gt;`元素来定义切面。切点通常通过`&lt;aop:pointcut&gt;`定义,并通过`id`属性给它命名。通知则通过`&lt;aop:before&gt;`、`&lt;aop:...

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

    在基于XML的配置方式下,我们将通过这些概念来理解Spring 2.0的AOP实现。 1. **切面(Aspect)**:一个关注点的模块化,例如日志记录、事务管理等。在Spring中,切面可以由一个或多个通知以及定义它们何时何地触发...

    spring aop管理xml版

    在"Spring AOP管理XML版"中,我们主要关注的是通过XML配置来管理AOP。以下是一些关键的XML配置元素: - `&lt;aop:config&gt;`:这是AOP配置的根元素,包含所有其他的AOP配置。 - `&lt;aop:aspect&gt;`:定义一个切面,内部可以...

Global site tag (gtag.js) - Google Analytics