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 ...
随机推荐
- Accessibility辅助功能--一念天堂,一念地狱
0x00什么是Accessibility(辅助功能) 考虑到部分用户不能很好地使用Android设备,比如由于视力.身体.年龄方面的限制,造成阅读内容.触控操作.声音信息等方面的获取困难,Androi ...
- Linux Platform驱动模型(二) _驱动方法
在Linux设备树语法详解和Linux Platform驱动模型(一) _设备信息中我们讨论了设备信息的写法,本文主要讨论平台总线中另外一部分-驱动方法,将试图回答下面几个问题: 如何填充platfo ...
- 源码(04) -- java.util.List<E>
java.util.List<E> 源码分析(JDK1.7) --------------------------------------------------------------- ...
- WEB前端性能优化之一——网页级优化
1.减少Http请求 http请求是指从客户端到服务器端的请求消息.其中包含对html.css.js.图片资源以及交互数据处理内容等.在前端性能网页级优化中较少http请求是非常重要的一块,每当我们提 ...
- MySQL架构由小变大的演变过程
假设一个网站(discuz)从最开始访问量很小做到日pv千万,我们来推测一下它的mysql服务器架构演变过程. 第一阶段网站访问量日pv量级在1w以下.单台机器跑web和db,不需要做架构层调优(比如 ...
- 使用hubuild,mui开发微信app—首页(一)
写在前面 本系列文章我将介绍一下从零开始利用hubuild,mui实现微信app的开发,该系列是个人学习记录,所以在每篇文章中,都是从怎么去实现开始讲解,然后再把实例中涉及知识点做一个概述. 创建一个 ...
- WP8.1开发中找程序下的Assets文件夹
这俩天在开发另一个程序时,遇到一个小问题:如何调用程序下的Assets文件夹及其下的文件和文件夹: 在网上找了两天,基本上是关于如何调用手机中库的方法,没找到有关介绍如何调用查找 编译前添加图片或其它 ...
- 做一款直播类app
ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijk ...
- 【openstack N版】——认证服务keystone
一. 基础环境 1.1环境介绍 linux-node1(控制节点) #系统版本 [root@linux-node1 ~]# cat /etc/redhat-release CentOS Linux r ...
- MySQL两种引擎的区别
Innodb引擎 Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别.该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL ...