前言:

如果一个项目没有 jdk 5.0 , 那就无法使用基于@AspectJ 注解 的切面.

但是使用AspectJ的表达式的大门还是可以使用的。

我们可以用java提供的Schema配置方法,来替代基于AspectJ注解声明切面这种方式。

  其实很容易理解,@AspectJ注解配置 和 Schema配置 是两个不同的实现手法,它们都能实现说明切面和增强的类型。

以下是一些标签的说明:

<aop:config>标签可以定义多个切面

<aop:aspect id="" ref=""> //标签用于定义一个切面,其内部可以定义多个增强
 <aop:pointcut expression="" id=""/> //定义切点
 <aop:before method="" pointcut-ref=""/>  //前置增强
 <aop:after-returning method="" pointcut-ref=""/>  //后置增强
 <aop:after-throwing method="" pointcut-ref=""/>  //异常增强
 <aop:after method="" pointcut-ref=""/>  //Final增强
<aop:around method="" pointcut-ref=""/> //环绕增强

<aop:declare-parents types-matching="com.imooc.aop.schema.advice.biz.*(+)"  //引介增强
implement-interface="com.imooc.aop.schema.advice.Fit"
default-impl="com.imooc.aop.schema.advice.FitImpl"/>

代码:

SayHelloBeforemale.java

//增强类
//不需要实现增强类的接口 , 只需要在 schema 的xml中定义就行啦
public class SayHelloBeforemale {
public void before() {
System.out.println("hello");
}
}

waiter.java

//目标类
public class waiter {
public void say() {
// TODO Auto-generated method stub
System.out.println("先生");
} }

spring-aop-schema-advice.xml

<bean id="advicemethods" class="test4.SayHelloBeforemale"/>
<bean id="waiter" class="test4.waiter"/>
<aop:config proxy-target-class="true"> <!-- 当状态为true 开启了CGLib 目标类不需要实现接口 -->
<aop:pointcut expression="execution(* test4.waiter.*(..))" id="pointcutt"/> <!-- 定义切点 -->
<aop:aspect id="advicemethods" ref="advicemethods"> <!-- 定义切面 -->
<aop:before method="before" pointcut-ref="pointcutt" /> <!-- 把切面切点连接起来 -->
</aop:aspect>
</aop:config>

UnitTest.java

//测试类
public class UnitTest { @Test //基于Schema配置方式
public void test3(){
ApplicationContext a = new ClassPathXmlApplicationContext("test4/spring-aop-schema-advice.xml");
waiter w = (waiter)a.getBean("waiter");
w.say();
}
}

spring-AOP-基于Schema切面的小例子的更多相关文章

  1. spring aop 基于schema的aop

    AOP的基本概念: 连接点(Jointpoint):表示需要在程序中插入横切关注点的扩展点,连接点可能是类初始化.方法执行.方法调用.字段调用或处理异常等等,Spring只支持方法执行连接点,在AOP ...

  2. Spring AOP基于配置文件的面向方法的切面

    Spring AOP基于配置文件的面向方法的切面 Spring AOP根据执行的时间点可以分为around.before和after几种方式. around为方法前后均执行 before为方法前执行 ...

  3. Spring AOP:面向切面编程,AspectJ,是基于注解的方法

    面向切面编程的术语: 切面(Aspect): 横切关注点(跨越应用程序多个模块的功能)被模块化的特殊对象 通知(Advice): 切面必须要完成的工作 目标(Target): 被通知的对象 代理(Pr ...

  4. Spring AOP:面向切面编程,AspectJ,是基于spring 的xml文件的方法

    导包等不在赘述: 建立一个接口:ArithmeticCalculator,没有实例化的方法: package com.atguigu.spring.aop.impl.panpan; public in ...

  5. Spring Aop基于注解的实现

    一.AspectOriented Programing,面向切面编程.   AOP主要用于日志记录,性能统计,安全控制(权限控制),事务处理,异常处理等.将日志记录,性能统计,安全控制,事务处理,异常 ...

  6. 第三章 AOP 基于Schema的AOP

    基于Schema定义的切面和前现两种方式定义的切面,内容上都差不多,只是表现形式不一样而已. 3.7.1一般增强的使用 a.目标类 public class Target { public void ...

  7. spring-第十七篇之spring AOP基于注解的零配置方式

    1.基于注解的零配置方式 Aspect允许使用注解定义切面.切入点和增强处理,spring框架可以识别并根据这些注解来生成AOP代理.spring只是用了和AspectJ 5一样的注解,但并没有使用A ...

  8. spring AOP AspectJ 定义切面实现拦截

    总结记录一下AOP常用的应用场景及使用方式,如有错误,请留言. 1.  讲AOP之前,先来总结web项目的几种拦截方式    A:  过滤器 使用过滤器可以过滤URL请求,以及请求和响应的信息,但是过 ...

  9. Spring和Hibernate结合的一个小例子

    1.新建一个SpringHibernate的maven项目 2.pom文件的依赖为 <dependency> <groupId>junit</groupId> &l ...

随机推荐

  1. setTimeout小总结

    ▓▓▓▓▓▓ 大致介绍 今天看了一篇文章,觉得写得不错,所以学习了一下,这篇博客是我自己的理解和总结 原文:你应该知道的 setTimeout 秘密 主要内容: 1.setTimeout原理 2.se ...

  2. 关于j2ee工程发布到was上后,部分更新,例修改web.xml配置文件不起作用的原因解析【转】

    在WAS中,应用的配置是从config/cells....目录下读取:而资源从/installedApps目录下读取 故当配置文件(例web.xml)发生改变时,只更新应用程序资源文件/install ...

  3. 笑谈ArcToolbox (4) 非我族类

    笑谈ArcToolbox (4) 非我族类 by 李远祥 ArcToolbox的工具既能直接对数据源进行处理,也能对图层以及被选择要素进行处理.但有些数据看起来是空间数据,但实际上在处理的时候还是会出 ...

  4. HUST 1584 摆放餐桌

    1584 - 摆放餐桌 时间限制:1秒 内存限制:128兆 609 次提交 114 次通过 题目描述 BG准备在家办一个圣诞晚宴,他用一张大桌子招待来访的客人.这张桌子是一个圆形的,半径为R.BG邀请 ...

  5. linux系统盘使用率达到100%的问题查找和解决方法

    今天公司云服务器报警系统发来短信,系统磁盘空间不够,登录服务器进行查看,磁盘使用虑达到100%,       感觉比较奇怪,所存的东西并不多,怎么会将磁盘占满,而且数据都是存在数据盘下,通过简单的进行 ...

  6. 毕向东udp学习笔记2

    项目功能:  发送端读取控制台输入,然后udp发送 接收端一直接收,直到输入为886 相对于笔记1,修改了发送端代码,实现发送控制台的内容,接收端循环接收,当输入886时,停止发送 发送端: impo ...

  7. java集合框架02——Collection架构与源码分析

    Collection是一个接口,它主要的两个分支是List和Set.如下图所示: List和Set都是接口,它们继承与Collection.List是有序的队列,可以用重复的元素:而Set是数学概念中 ...

  8. Matlab中plot函数全功能解析

    Matlab中plot函数全功能解析 功能 二维曲线绘图 语法 plot(Y)plot(X1,Y1,...)plot(X1,Y1,LineSpec,...)plot(...,'PropertyName ...

  9. 学生管理系统(C语言)

    #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 3 #define LEN ...

  10. HR从业者的下一个十年该怎么做?

    众所周知,目前我们所处的以互联网为代表的新经济时代,有两个重要的特征一是客户价值至上,二是人力资本主权.围绕这两个基本特征,我们需要重新架构我们的商业模式和创新人力资源管理思维.模式.工具和方法. 人 ...