一个简单的Spring的AOP例子
目标对象的接口:IStudent.java
/** 2
* 3
*/ 4
package com.dragon.study;5
6
/** 7
* @author dragon8
*9
*/ 10
public interface IStudent {11
12
public void addStudent(String name);13
} 14

目标类:StudentImpl.java
/** 2
* 3
*/ 4
package com.dragon.study.Impl;5
6
import com.dragon.study.IStudent;7
8
/** 9
* @author dragon10
*11
*/ 12
public class StudentImpl implements IStudent {13
14
public void addStudent(String name) {15
System.out.println( " 欢迎 " + name + " 你加入Spring家庭! " );16
} 17
} 18

前置通知:BeforeAdvice.java
/** 2
* 3
*/ 4
package com.dragon.Advice;5
6
import java.lang.reflect.Method;7
8
import org.springframework.aop.MethodBeforeAdvice;9
10
/** 11
* @author dragon12
*13
*/ 14
public class BeforeAdvice implements MethodBeforeAdvice {15
16
public void before(Method method,Object[] args, Object target)17
throws Throwable {18
19
System.out.println( " 这是BeforeAdvice类的before方法. " );20
21
} 22
} 23

后置通知:AfterAdvice.java
/**2
* 3
*/4
package com.dragon.Advice;5

6
import java.lang.reflect.Method;7

8
import org.springframework.aop.AfterReturningAdvice;9

10
/**11
* @author dragon12
*13
*/14
public class AfterAdvice implements AfterReturningAdvice{15
16
public void afterReturning(Object returnValue ,Method method,17
Object[] args,Object target) throws Throwable{18
System.out.println("这是AfterAdvice类的afterReturning方法.");19
}20
21

22
}23

环绕通知:CompareInterceptor.java
/**2
* 3
*/4
package com.dragon.Advice;5

6
import org.aopalliance.intercept.MethodInterceptor;7
import org.aopalliance.intercept.MethodInvocation;8

9

10
/**11
* @author dragon12
*13
*/14
public class CompareInterceptor implements MethodInterceptor{15

16
public Object invoke(MethodInvocation invocation) throws Throwable{17
Object result = null;18
String stu_name = invocation.getArguments()[0].toString();19
if ( stu_name.equals("dragon")){20
//如果学生是dragon时,执行目标方法,21
result= invocation.proceed();22
23
} else{24
System.out.println("此学生是"+stu_name+"而不是dragon,不批准其加入.");25
}26
27
return result;28
}29
}30

配置文件applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>2
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">3

4
<beans>5

6
<bean id="beforeAdvice" class="com.dragon.Advice.BeforeAdvice"></bean>7
<bean id="afterAdvice" class="com.dragon.Advice.AfterAdvice"></bean>8
<bean id="compareInterceptor" class="com.dragon.Advice.CompareInterceptor"></bean>9
<bean id="studenttarget" class="com.dragon.study.Impl.StudentImpl"></bean>10

11
<bean id="student" class="org.springframework.aop.framework.ProxyFactoryBean">12
<property name="proxyInterfaces">13
<value>com.dragon.study.IStudent</value>14
</property>15
<property name="interceptorNames">16
<list>17
<value>beforeAdvice</value>18
<value>afterAdvice</value>19
<value>compareInterceptor</value> 20
</list>21
</property>22
<property name="target">23
<ref bean="studenttarget"/>24
</property>25

26
</bean>27

28

29

30

31
</beans>现在开始写测试类,Test.java
/**2
* 3
*/4
package com;5

6
import org.springframework.context.ApplicationContext;7
import org.springframework.context.support.FileSystemXmlApplicationContext;8

9
import com.dragon.study.IStudent;10

11
/**12
* @author dragon13
*14
*/15
public class Test {16

17
/**18
* @param args19
*/20
public static void main(String[] args) {21
// TODO Auto-generated method stub22
ApplicationContext ctx = 23
new FileSystemXmlApplicationContext("/com/dragon/applicationContext.xml");24
25
IStudent person = (IStudent)ctx.getBean("student");26
person.addStudent("dragon");27
28
// person.addStudent("javadragon");29
}30

31
}32

一个简单的Spring的AOP例子的更多相关文章
- 一个简单的Spring测试的例子
在做测试的时候我们用到Junit Case,当我们的项目中使用了Sring的时候,我们应该怎么使用spring容器去管理我的测试用例呢?现在我们用一个简单的例子来展示这个过程. 1 首先我们新建一个普 ...
- 【Spring】简单的Spring MVC入门例子
前言 测试特性需要搭建一个简单的Spring MVC的例子,遂记录之,只是例子,只为入门者之示例. 版本说明 声明POM文件,指定需引入的JAR. <properties> <spr ...
- 在eclipse中配置一个简单的spring入门项目
spring是一个很优秀的基于Java的轻量级开源框架,为了解决企业级应用的复杂性而创建的,spring不仅可用于服务器端开发,从简单性.可测试性和松耦合性的角度,任何java应用程序都可以利用这个思 ...
- 创建一个简单的Spring应用
环境已经安装完成,接下来创建一个简单的Spring应用. 创建Spring应用步骤: 创建一个maven项目 添加spring库依赖 创建Bean类 添加Bean的xml装配文件 创建主类 运行应用程 ...
- 构建一个简单的Spring Boot项目
11 构建一个简单的Spring Boot项目 这个章节描述如何通过Spring Boot构建一个"Hello Word"web应用,侧重介绍Spring Boot的一些重要功能. ...
- 一个简单的spring boot程序
搭建一个spring boot项目十分的方便,网上也有许多,可以参考 https://www.cnblogs.com/ityouknow/p/5662753.html 进行项目的搭建.在此我就不详细介 ...
- 一个简单的Spring AOP例子
转载自: http://www.blogjava.net/javadragon/archive/2006/12/03/85115.html 经过这段日子的学习和使用Spring,慢慢地体会到Sprin ...
- JAVA WEB快速入门之通过一个简单的Spring项目了解Spring的核心(AOP、IOC)
接上篇<JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构.调试.部署>,通过一个简单的JSP WEB网站了解了JAVA WEB相关的知识,比如:Ser ...
- CSS布局中一个简单的应用BFC的例子
什么是BFC BFC(Block Formatting Context),简单讲,它是提供了一个独立布局的环境,每个BFC都遵守同一套布局规则.例如,在同一个BFC内,盒子会一个挨着一个的排,相邻盒子 ...
随机推荐
- php中的引用
$var1 = 'zhuchunyu'; $var2 = ""; function foo($vaa){ global $var1,$var2; if (!$vaa){ $var2 ...
- Vue--- vue-cli 脚手架 安装 -reeber
vue-cli 脚手架 安装 一. node安装 1)如果不确定自己是否安装了node,可以在命令行工具内执行: node -v (检查一下 版本): 2)如果 执行结果显示: xx 不是内部命 ...
- QT 防止FTP 上传软件在断连处 Crash
前段时间发现项目中的上传FTP软件有可能会在从服务器申请断连时Crash, 所以加了一个Timer. 由于项目代码行数过大, 此处上传部分代码片段. timeoutTimer = new QTimer ...
- 使用js实现单向绑定
详细解释单向绑定 参考资料 MDN addEventListener()定义与用法 <!DOCTYPE html> <html lang="en"> < ...
- ASP.NET Core学习网站推荐
跟大家推荐一个不错的学习.NET Core 的网站,这个网站的视频是付费的,但是录视频的都是.NET Core的大佬们,个人觉得很不错推荐出来 video.jessetalk.cn
- 帝国cms全文搜索 增加自定义字段搜索
帝国cms全站搜索功能只能调出固定的几个字段,如果想搜索其他字段的值,这时我们应该怎么办呢?开拓族网站有这个需求,所以研究了一下帝国的全站搜索,后来发现在/e/sch/index.php中可以直接对数 ...
- Spark运行模式_spark自带cluster manager的standalone cluster模式(集群)
这种运行模式和"Spark自带Cluster Manager的Standalone Client模式(集群)"还是有很大的区别的.使用如下命令执行应用程序(前提是已经启动了spar ...
- Python学习手册之数据封装、类方法、静态方法和属性函数
在上一篇文章中,我们介绍了 Python 的内部方法.操作符重载和对象生命周期,现在我们介绍 Python 的数据封装.类方法.静态方法和属性函数.查看上一篇文章请点击:https://www.cnb ...
- tomcat搭建https服务(非自签发)
平时做自己的web demo基本上都是用http协议进行访问. 但是正式情况基本上都是https进行访问,所以掌握https的配置是很关键的. 需要准备的材料: 一台可以可以外网访问的远程服务器 to ...
- GDB 单步调试汇编
本文同时发表在 https://github.com/zhangyachen/zhangyachen.github.io/issues/134 之前在看汇编的时候一直是肉眼看GCC -S的结果,缺点是 ...