一个简单的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内,盒子会一个挨着一个的排,相邻盒子 ...
随机推荐
- Swift_继承
Swift_继承 点击查看源码 func testInheritance() { //基类 class Base { var count = 0.0 var description: String { ...
- 复习宝典之SpringMVC
查看更多宝典,请点击<金三银四,你的专属面试宝典> 第七章:SpringMVC MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(co ...
- Systemd简介与使用
按下电源键,随着风扇转动的声音,显示器上开启的图标亮起.之后,只需要静静等待几秒钟,登录界面显示,输入密码,即可愉快的玩耍了. 这是我们大概每天都做的事情.那么中间到底发生了什么? 简单地说,从BIO ...
- go加密算法:非对称加密(一)--RSA
椭圆曲线加密__http://blog.51cto.com/11821908/2057726 // MyRas.go package main import ( "crypto/rand&q ...
- PHP封装CURL
CURL是一个非常强大的开源库,支持很多协议,包括HTTP.FTP.TELNET等,我们使用它来发送HTTP请求.它给我 们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS ...
- 【MYSQL笔记】
1.去重取出id最小的记录 tip:在laravel框架里配置信息database设置了'strict' => true,所以在groupBy时只能select出groupBy后的字段,当想搜索 ...
- %.*lf控制输出长度
#include<stdio.h> int main(){ int a,b,c; while(scanf("%d%d%d",&a,&b,&a ...
- 北京Uber优步司机奖励政策(2月7日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 宁波Uber优步司机奖励政策(12月21日到12月27日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 【LG1527】[国家集训队]矩阵乘法
[LG1527][国家集训队]矩阵乘法 题面 洛谷 题解 我也不知道为什么取个这样的名字... 其实就是区间\(kth\)扩展到二维 还是用整体二分搞啦,把树状数组换成二维的 其他的基本没有什么差别 ...