SpringAOP简单例子
这个只是个简单AOP例子,包括前置通知,后置通知,环绕通知,和目标对象。写这个例子的主要目标只是想让想学AOP的能更快地入门,了解一下如何去配置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

SpringAOP简单例子的更多相关文章
- Spring框架系列(2) - Spring简单例子引入Spring要点
上文中我们简单介绍了Spring和Spring Framework的组件,那么这些Spring Framework组件是如何配合工作的呢?本文主要承接上文,向你展示Spring Framework组件 ...
- Hibernate4.2.4入门(一)——环境搭建和简单例子
一.前言 发下牢骚,这段时间要做项目,又要学框架,搞得都没时间写笔记,但是觉得这知识学过还是要记录下.进入主题了 1.1.Hibernate简介 什么是Hibernate?Hibernate有什么用? ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- spring mvc(注解)上传文件的简单例子
spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...
- ko 简单例子
Knockout是在下面三个核心功能是建立起来的: 监控属性(Observables)和依赖跟踪(Dependency tracking) 声明式绑定(Declarative bindings) 模板 ...
- mysql定时任务简单例子
mysql定时任务简单例子 ? 1 2 3 4 5 6 7 8 9 如果要每30秒执行以下语句: [sql] update userinfo set endtime = now() WHE ...
- java socket编程开发简单例子 与 nio非阻塞通道
基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...
- 一个简单例子:贫血模型or领域模型
转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...
- [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select
以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...
随机推荐
- 攻防世界 Misc 新手练习区 gif Writeup
攻防世界 Misc 新手练习区 gif Writeup 题目介绍 题目考点 仔细联想 字符转换 Writeup 下载附件并打开 104张黑白图 发现是一堆黑色和白色的图片,按某种规律排列,猜想flag ...
- Express 的基本使用(创建一个简单的服务器)
Express 的基本使用(创建一个简单的服务器) const express = require('express') // 创建服务器应用程序 // 相当于 http.creatServer co ...
- 大爽Python入门教程 3-2 条件判断: if...elif..else
大爽Python入门公开课教案 点击查看教程总目录 简单回顾if 回顾下第一章的代码 >>> x = 5 >>> if x > 0: ... print(&q ...
- python 字符串和demical转换
转成decimal格式 import decimal a="12" #判断是否是有数字 print(a.isdecimal()) #转化成decimal.Decimal格式 a1= ...
- java 获得 微信 UserId
.... public String cs() throws Exception{ /*访问页面,服务器会得到 code(request.getParameter("code")) ...
- Java安全之基于Tomcat的Filter型内存马
Java安全之基于Tomcat的Filter型内存马 写在前面 现在来说,内存马已经是一种很常见的攻击手法了,基本红队项目中对于入口点都是选择打入内存马.而对于内存马的支持也是五花八门,甚至各大公司都 ...
- [loj2245]魔法森林
枚举携带的"A型守护精灵"数$A_{0}$,那么即只能经过$A_{i}\le A_{0}$的边,并最小化1到$n$路径上最大的$B_{i}$ 将所有边按照$A_{i}$从小到大排序 ...
- [bzoj1188]分裂游戏
容易发现所有豆子相互独立,只需要考虑每一个豆子的sg函数并异或起来即可,sg函数从后往前暴力即可 1 #include<bits/stdc++.h> 2 using namespace s ...
- [bzoj1052]覆盖问题
先二分答案,容易发现一定有一个正方形覆盖在角上(即有两条边在最X的地方),否则4个最X的点一定无法覆盖,然后暴力确定即可 1 #include<bits/stdc++.h> 2 using ...
- [GYCTF2020]Easyphp
知识点 反序列化pop链 反序列化字符逃逸 解题过程 www.zip 备份文件获取源码 审计代码构造pop链 <?php Class UpdateHelper{ public $id; publ ...