BeforeAdvice

1、会在目标对象的方法执行之前被调用。

2、通过实现MethodBeforeAdvice接口来实现。

3、该接口中定义了一个方法即before方法,before方法会在目标对象target之前执行。

AfterAdvice

1、在目标对象的方法执行之后被调用

2、通过实现AfterReturningAdvice接口实现

实现目标:

在方法之前调用执行某个动作。

IHello 和Hello:

public interface IHello {
public void sayHello(String str);
}
public class Hello implements IHello {
@Override
public void sayHello(String str) {
System.out.println("你好"+str);
}
}

SayBeforeAdvice:

public class SayBeforeAdvice implements MethodBeforeAdvice {

	@Override
public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable {
// TODO Auto-generated method stub
System.out.println("在方法执行前做事情!");
} }

SayAfterAdvice文件:

public class SayAfterAdvice implements AfterReturningAdvice {

	@Override
public void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable {
// TODO Auto-generated method stub
System.out.println("在方法执行后做事情!");
} }

  

applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- 建立目标对象实例 -->
<bean id="bean_hello" class="com.pb.Hello" />
<!-- 创建执行前advice实例 -->
<bean id="sba" class="com.pb.SayBeforeAdvice" />
<!-- 创建执行后advice实例 -->
<bean id="sfa" class="com.pb.SayAfterAdvice" />
<!-- 建立代理对象 -->
<bean id="helloProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<!-- 设置代理的接口 -->
<property name="proxyInterfaces">
<value>com.pb.IHello</value>
</property>
<!-- 设置目标对象实例 -->
<property name="target">
<ref bean="bean_hello"/>
</property>
<!-- 设置Advice实例 -->
<property name="interceptorNames">
<list>
<value>sba</value>
<value>sfa</value>
</list>
</property>
</bean>
</beans>

  

Main执行:

public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); IHello hello=(IHello)context.getBean("helloProxy");
hello.sayHello("访客");
}

  

执行效果:

最新文章

  1. OCIEnvNlsCreate 失败,返回代码为 -1,但错误消息文本不可用
  2. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:5.安装Oracle RAC FAQ-RAC安装DB软件runInstaller看不到节点
  3. Word转图片(使用Spire.doc)
  4. 配置ConvenientBanner时出现的问题
  5. Linux 安装rar解压工具
  6. 快速开发 jQuery 插件的 10 大技巧(转)
  7. 如何把SKYPE的发送消息由enter改为ctrl+enter?
  8. HQL语句大全
  9. contos最小包安装完后一些准备
  10. MYSQL数据仓库infobright【备忘】
  11. 9、socket.io,websocket 前后端实时通信,(聊天室的实现)
  12. [c/c++] programming之路(15)、多维数组和二分查找法,小外挂
  13. for master
  14. [转] bss段、data段、text段
  15. (Gorails视频)使用推广链接(params[:ref]),增加注册用户!
  16. 6月3 Smarty基础读取配置
  17. MySql(九):MySQL性能调优——Schema设计的性能优化
  18. PAT Waiting in Line[转载]
  19. HDU 6103 Kirinriki(尺取法)
  20. Django_cookie+session

热门文章

  1. Eclipse各个版本及其对应代号、下载地址列表【转】
  2. Servlet使用反射机制
  3. Java-JUC(十三):现在有两个线程同时操作一个整数I,做自增操作,如何实现I的线程安全性?
  4. MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning
  5. A3C 算法资料收集
  6. golang rabbitmq 的学习
  7. 自定义Spring Boot内置tomcat的404页面
  8. [转]npm安装教程
  9. leetcode 266.Palindrome Permutation 、267.Palindrome Permutation II
  10. chartjs