Spring_在XML中声明切面

人,最大的敌人是自己。

AOP配置元素

  在Spring的aop命名空间中,提供多个元素用来在XML中声明切面。

  1)<aop:advisor>:定义AOP通知器

  2)<aop:after>:定义AOP后置通知(不管被通知的方法是否执行成功)

  3)<aop:after-returning>:定义AOP返回通知

  4)<aop:after-throwing>:定义AOP异常通知

  5)<aop:around>:定义AOP环绕通知

  6)<aop:aspect>:定义一个切面

  7)<aop:aspectj-autoproxy>:启用@Aspect注解驱动的切面

  8)<aop:before>:定义AOP前置通知

  9)<aop:config>:顶层的AOP配置元素,大多数的<asop:*>元素必须在该元素内

  10)<aop:declare-parents>:以透明的方式为被通知的对象引入额外的接口

  11)<aop:pointcut>:定义一个切点

<?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"
    xmlns:c="http://www.springframework.org/schema/c"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/jdbc         http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.3.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd">
        <bean id="audience" class="chapter4.practice1.Audience"/>
        <aop:config>
            <!-- 声明切面 -->
            <aop:aspect ref="audience">
                <!-- 定义切点 -->
                <aop:pointcut expression="executionexecution(** chapter4.practice1.Performance.perform(..))"            id="performance"/>
                <!-- 定义前置通知 -->
                <aop:before pointcut-ref="performance" method="perform"/>
                <!-- 定义返回通知 -->
                <aop:after-returning pointcut-ref="performance" method="performReturn"/>
                <!-- 定义异常通知 -->
                <aop:after-throwing pointcut-ref="performance" method="performThrowing"/>
                <!-- 定义环绕通知 -->
                <aop:around pointcut-ref="performance" method="aroundPerformance"/>
                <!-- 定义一个存在参数的切点,为通知传参数 -->
                <aop:pointcut expression="executionexecution(** chapter4.practice1.Performance.play(String))           and args(gameName)" id="game"/>
            </aop:aspect>
        </aop:config>

</beans>

  虽然基于注解的自动化配置要优于Java的配置,基于Java的配置要优于基于XML的配置,但是,如果你需要声明切面的通知类不能添加注解的时候(类来自于第三方),那么就必须采用XML配置。

原文地址:https://www.cnblogs.com/dandelZH/p/8955827.html

时间: 2024-10-12 19:04:32

Spring_在XML中声明切面的相关文章

Spring AOP 在XML中声明切面

转载地址:http://www.jianshu.com/p/43a0bc21805f 在XML中将一个Java类配置成一个切面: AOP元素 用途 <aop:advisor> 定义AOP通知器 <aop:after> 定义一个后置通知(不管目标方法是否执行成功) <aop:after-returning> 定义AOP返回通知 <aop:after-throwing> 定义AOP异常通知 <aop:around> 定义环绕通知 <aop:as

Spring 在XML中声明切面/AOP

在Spring的AOP配置命名空间中,我们能够找到声明式切面选择.看以下: <aop:config> <!-- AOP定义開始 --> <aop:pointcut/> <!-- 定义切入点 --> <aop:advisor/> <!-- 定义AOP通知器 --> <aop:aspect> <!-- 定义切面開始 --> <aop:pointcut/> <!-- 定义切入点 --> <

Spring_在XML中通过切面引入新的功能

没有不会做的事,只有不想做的事. 在Java配置中我们借助AspectJde @DeclareParents注解为被通知的方法引入新的方法,在XML中我们可以使用Spring aop命名空间的 <aop:declare-parents>元素. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/be

SpringMVC: web.xml中声明DispatcherServlet时一定要添加load-on-startup标签

游历SpringMVC源码后发现,在web.xml中注册的ContextLoaderListener监听器只是初始化了一个根上下文,仅仅完成了组件扫描和与容器初始化相关的一些工作,并没有探测到具体每个URL应当map到哪个Controller, 哪个方法上.而剩一下的这些复杂工作都是由DispatcherServet来完成的,即应用服务器加载DispatcherServlet调用init()方法时才能触发这项工作.所以,如果在web.xml中配置DispatcherServlet时不设置 <lo

SpringMVC: web.xml中声明DispatcherServlet时一定要加入load-on-startup标签

游历SpringMVC源代码后发现,在web.xml中注冊的ContextLoaderListener监听器不过初始化了一个根上下文,只完毕了组件扫描和与容器初始化相关的一些工作,并没有探測到详细每一个URL应当map到哪个Controller, 哪个方法上.而剩一下的这些复杂工作都是由DispatcherServet来完毕的,即应用server载入DispatcherServlet调用init()方法时才干触发这项工作.所以,假设在web.xml中配置DispatcherServlet时不设置

jstl标签在xml中声明

<jsp-config> <taglib> <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri> <taglib-location>/WEB-INF/fmt.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://java.sun.com/jstl/core</taglib-u

Spring之AOP在XML中的配置方法

AOP 即 Aspect Oriental Program 面向切面编程 先来一个栗子: <aop:config> <aop:pointcut id="loggerCutpoint" expression= "execution(* com.how2java.service.ProductService.*(..)) "/> <aop:aspect id="logAspect" ref="loggerAsp

Spring AOP——Spring 中面向切面编程

前面两篇文章记录了 Spring IOC 的相关知识,本文记录 Spring 中的另一特性 AOP 相关知识. 部分参考资料: <Spring实战(第4版)> <轻量级 JavaEE 企业应用实战(第四版)> Spring 官方文档 W3CSchool Spring教程 易百教程 Spring教程 一.AOP--另一种编程思想 1.1 什么是 AOP AOP (Aspect Orient Programming),直译过来就是 面向切面编程.AOP 是一种编程思想,是面向对象编程(

android动画具体解释六 XML中定义动画

动画View 属性动画系统同意动画View对象并提供非常多比view动画系统更高级的功能.view动画系统通过改变绘制方式来变换View对象,view动画是被view的容器所处理的,由于View本身没有要操控的属性.结果就是View被动画了.但View对象本身并没有变化. 在Android3.0中,新的属性和对应的getter和setter方法被增加以克服此缺点. 属性动画系统能够通过改变View对象的真实属性来动画Views. 并且.View也会在其属性改变时自己主动调用invalidate(