spring-AOP-基于Schema切面的小例子
前言:
如果一个项目没有 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切面的小例子的更多相关文章
- spring aop 基于schema的aop
AOP的基本概念: 连接点(Jointpoint):表示需要在程序中插入横切关注点的扩展点,连接点可能是类初始化.方法执行.方法调用.字段调用或处理异常等等,Spring只支持方法执行连接点,在AOP ...
- Spring AOP基于配置文件的面向方法的切面
Spring AOP基于配置文件的面向方法的切面 Spring AOP根据执行的时间点可以分为around.before和after几种方式. around为方法前后均执行 before为方法前执行 ...
- Spring AOP:面向切面编程,AspectJ,是基于注解的方法
面向切面编程的术语: 切面(Aspect): 横切关注点(跨越应用程序多个模块的功能)被模块化的特殊对象 通知(Advice): 切面必须要完成的工作 目标(Target): 被通知的对象 代理(Pr ...
- Spring AOP:面向切面编程,AspectJ,是基于spring 的xml文件的方法
导包等不在赘述: 建立一个接口:ArithmeticCalculator,没有实例化的方法: package com.atguigu.spring.aop.impl.panpan; public in ...
- Spring Aop基于注解的实现
一.AspectOriented Programing,面向切面编程. AOP主要用于日志记录,性能统计,安全控制(权限控制),事务处理,异常处理等.将日志记录,性能统计,安全控制,事务处理,异常 ...
- 第三章 AOP 基于Schema的AOP
基于Schema定义的切面和前现两种方式定义的切面,内容上都差不多,只是表现形式不一样而已. 3.7.1一般增强的使用 a.目标类 public class Target { public void ...
- spring-第十七篇之spring AOP基于注解的零配置方式
1.基于注解的零配置方式 Aspect允许使用注解定义切面.切入点和增强处理,spring框架可以识别并根据这些注解来生成AOP代理.spring只是用了和AspectJ 5一样的注解,但并没有使用A ...
- spring AOP AspectJ 定义切面实现拦截
总结记录一下AOP常用的应用场景及使用方式,如有错误,请留言. 1. 讲AOP之前,先来总结web项目的几种拦截方式 A: 过滤器 使用过滤器可以过滤URL请求,以及请求和响应的信息,但是过 ...
- Spring和Hibernate结合的一个小例子
1.新建一个SpringHibernate的maven项目 2.pom文件的依赖为 <dependency> <groupId>junit</groupId> &l ...
随机推荐
- BOM之history对象
前面的话 history对象保存着用户上网的历史记录,从窗口被打开的那一刻算起.由于安全方面的考虑,开发人员无法得到用户浏览器的URL,但借由用户访问过的页面列表,可以在不知道实际URL的情况下实现后 ...
- 数据库MySQL调优实战经验总结
MySQL 数据库的使用是非常的广泛,稳定性和安全性也非常好,经历了无数大小公司的验证.仅能够安装使用是远远不够的,MySQL 在使用中需要进行不断的调整参数或优化设置,才能够发挥 MySQL 的最大 ...
- 在javascript中关于变量与函数的提升
在javascript中关于变量与函数的提升 一.简介 在javascript中声明变量与函数的执行步骤: 1.先预解析变量或函数声明代码,会把用var声明的变量或者函数声明的代码块进行提升操作 2. ...
- OpenCv 2.4.9 (二) 核心函数
前言 经过前面一节的怎样读取图片,我们可以做一些有趣的图像变换,下面我们首先介绍使用遍历的方法实现,然后我们使用内置的函数实现. 矩阵掩码实现 矩阵掩码,和卷积神经网络中的卷积类似.一个例子如下: 现 ...
- Swift_字符串详解(String)
Swift_字符串详解(String) 类型别名 //类型别名 fileprivate func testTypeAliases() { let index = String.Index.self p ...
- itextsharp c# asp.net 生成 pdf 文件
一切的开始必须要有2个dll, 可以通过nuget 包xiazai, 关键字是itextsharp. using iTextSharp.text; using iTextSharp.text.pdf; ...
- 免费的ERP真的那么可怕?请少一些偏见!
为什么说这个话题,因为看到了太多关于对免费ERP的偏见,也许这也只是那些卖软件的营销策略:从事这个行业的人,应该能看出其中的端倪,但是对于吃瓜群众来说,那就真是误导了... 所以今天发表下自己的看法, ...
- C#中函数的功能和类型
函数 就是方法是独立完成某项功能的一个个体 函数的的三个好处:1.提高代码的重用性.2.提高功能开发的效率,3.提高代码的可维护性(主要功能). 函数也分为 固定功能函数(这类函数具有可封闭 ...
- 初探nginx负载均衡集群
借LVS的环境: A(dir):192.168.122.129 B(rs1):192.168.122.140 C(rs2):192.168.122.141 Centos 6下如果安装过epel的yum ...
- Java XML DOM解析(xPath)
(一) XML概念 在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等.它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的 ...