`

[#0x0045] Spring AOP学习(四):简单XML配置

阅读更多

  紧接着(三)中的例子。其实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:context="http://www.springframework.org/schema/context"
       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/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
	<context:annotation-config />
	<context:component-scan base-package="com.bjsxt"/>

	<bean id="logInterceptor" class="com.bjsxt.aop.LogInterceptor"></bean>
	<aop:config>
		<aop:pointcut expression="execution(public * com.bjsxt.service..*.add(..))" id="logPointCut"/>
		<aop:aspect id="logAspect" ref="logInterceptor">
			<aop:before method="before" pointcut-ref="logPointCut" />
		</aop:aspect>
	</aop:config>
</beans>

  (1) 首先去掉了<aop:aspectj-autoproxy />这句

  (2) 还是得先初始化一个LogInteceptor对象,所以要先写一个<bean>

  (3) AOP的配置写在<aop:config></aop:config>

  (4) 调用add()方法时,Spring发现符合pointcut("logPointCut"),然后这个poincut又被aspect("logAspect")引用到了,所以就去执行相应的切面逻辑

  (5) 上面定义了一个全局的pointcut("logPointCut"),这意味着其他的aspect都可以通过id引用这个pointcut。其实也可以将pointcut写在aspect内,这样相当于一个私有pointcut,其他的aspect无法引用这个pointcut(没有id):

<bean id="logInterceptor" class="com.bjsxt.aop.LogInterceptor"></bean>
<aop:config>	
	<aop:aspect id="logAspect" ref="logInterceptor">
		<aop:before method="before" pointcut="execution(public * com.bjsxt.service..*.add(..))" />
	</aop:aspect>
</aop:config>

 

  某些情况下,要使用别人的切面类(比如一个测量代码性能的工具,要把测量的逻辑织入你自己的代码),这时你不可能在别人的切面类代码上加注解,所以只有通过XML来配置。目前在实际使用中,XML的使用也是多于注解。

分享到:
评论

相关推荐

    [#0x0042] Spring AOP学习(二):动态代理

    在Spring AOP的学习中,动态代理是一个至关重要的概念。本文将深入探讨动态代理在Spring框架中的应用,以及如何通过JDK的动态代理机制实现这一功能。动态代理是面向切面编程(AOP)的一种实现方式,它允许我们在不...

    Spring AOP 入门作者:廖雪峰

    #### 四、Spring配置与AOP应用 在Spring框架中,使用XML配置文件将业务Bean组织起来。首先,配置`MyServiceBean`实例,并注入所需的属性,如用户目录。然后,定义AOP的切面,包括切入点和通知,以增强业务Bean的...

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

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

    SpringAop学习笔记以及实现Demo

    2. **基于注解的AOP**:Spring 2.5开始支持注解驱动的AOP,通过在方法上使用`@Before`、`@After`、`@AfterReturning`、`@AfterThrowing`、`@Around`等注解来定义通知。 3. **基于XML配置的AOP**:在Spring的配置...

    Spring AOP学习资料(pdf)

    ### Spring AOP 学习资料知识点总结 #### 一、Spring AOP 概念与背景 **Spring AOP**(面向切面编程)是Spring框架中的一个重要组成部分,它通过预定义的切入点来分离关注点,使得核心业务逻辑更加清晰,同时能够...

    SpringAop xml方式配置通知

    **Spring AOP XML方式配置通知** 在Java世界中,Spring框架是广泛应用的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)容器。AOP允许开发者定义“方面”,这些方面可以封装关注点,如日志、事务...

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

    3. **灵活的通知模型**:Spring AOP提供了多种类型的通知,包括around、before、after returning、after throwing等,使得开发者可以根据实际需求选择最适合的通知类型。 4. **丰富的切入点表达式语言**:Spring ...

    Spring AOP实现机制

    Spring AOP的配置可以通过XML或注解方式进行: - **XML配置**: - 在`&lt;aop:config&gt;`标签内定义切面,`&lt;aop:pointcut&gt;`定义切入点,`&lt;aop:advisor&gt;`定义通知。 - `&lt;aop:aspect&gt;`标签用于定义完整的切面,包括切入...

    Spring AOP 的实现例子(基于XML配置实现)

    XML配置是Spring AOP早期的主要实现方式,虽然现在有更简洁的注解式配置,但理解XML配置方式对于深入理解AOP原理仍然很有帮助。下面我们将详细探讨如何通过XML配置实现Spring AOP。 首先,我们需要在Spring配置文件...

    spring AOP入门教程

    1. **基于代理的AOP**:Spring使用JDK动态代理或CGLIB代理来创建代理对象。如果目标类实现了接口,Spring会使用JDK动态代理;否则,它会使用CGLIB生成一个子类来实现AOP。 2. **基于字节码增强的AOP**:通过ASM库,...

    springAop的配置实现

    - **代理(Proxy)**:Spring AOP通过代理模式来实现切面功能,有JDK动态代理和CGLIB代理两种方式。 **2. JDK 动态代理** - 当目标类实现了接口时,Spring AOP会选择使用JDK动态代理。它会生成一个实现了目标类所有...

    spring Aop文档

    下面是一个简单的基于注解的Spring AOP配置示例: ```java // 定义切面 @Aspect @Component public class LoggingAspect { // 前置通知 @Before("execution(* com.example.service.*.*(..))") public void log...

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

    本篇文章主要讲解如何通过XML配置来实现Spring AOP的开发。 首先,了解AOP的基本概念。AOP通过“切面”(Aspect)来封装横切关注点,切面由“通知”(Advice)和“连接点”(Join Point)组成。通知是在特定连接点...

    spring aop 学习笔记

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

    spring aop管理xml版

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

    使用Spring配置文件实现AOP

    以下是一个简单的Spring AOP配置文件示例: ```xml &lt;aop:config&gt; &lt;aop:aspect id="loggingAspect" ref="loggingAdvice"&gt; &lt;aop:before method="beforeMethod" pointcut-ref="businessMethods"/&gt; &lt;aop:after-...

    Spring Aop使用实例

    - `ApplicationConfig`:Spring配置文件,启用AOP并配置切面。 - 测试类:用来验证AOP功能是否正确工作。 通过运行这个项目,你可以看到AOP如何在实际场景中工作,如何通过切面和通知来增强业务逻辑。 总的来说,...

    spring aop xml 实例

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

    spring aop 附带测试实例

    5. **代理(Proxy)**:Spring AOP通过创建代理对象来实现对目标对象的拦截,代理对象会在调用目标方法前后执行通知。 ### 二、Spring AOP配置与实现 1. **注解驱动(Annotation-based)**:使用`@Aspect`定义切面...

Global site tag (gtag.js) - Google Analytics