AroundAdvice

1、在方法之前和之后来执行相应的操作

2、实现MethodInterceptor接口

接口文件:

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

  SayAroundAdvice文件:

public class SayAroundAdvice implements MethodInterceptor {

	@Override
public Object invoke(MethodInvocation arg0) throws Throwable {
// TODO Auto-generated method stub
Object result=null; System.out.println("Around在方法执行前做事情!"); result=arg0.proceed(); System.out.println("Around在方法执行后做事情!"); return result;
} }

  Main文件:

public class MainTest {

	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("访客");
} }

  

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" />
<!-- 创建Around advice实例 -->
<bean id="ssd" class="com.pb.SayAroundAdvice" />
<!-- 建立代理对象 -->
<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>ssd</value>
</list>
</property>
</bean>
</beans>

  执行效果:

最新文章

  1. Service组件简介
  2. ubuntu卸载安装mysql
  3. Maven的包依赖冲突可引发java.lang.IncompatibleClassChangeError错误
  4. Spring Framework------&gt;version4.3.5.RELAESE-----&gt;Reference Documentation学习心得-----&gt;使用Spring Framework开发自己的应用程序
  5. Spring对Quartz的封装实现简单需注意事项
  6. HDNOIP普及+提高整合
  7. Multiple MySQL running but PID file could not be found
  8. linux chmod命令(转)
  9. 安装mongodb后服务启动不了的问题
  10. python命令行参数处理模块 optparse 使用参考
  11. IOS之沙盒(Sandbox)机制
  12. c#面向对象小结
  13. php中判断变量是否为空
  14. [译]Java垃圾回收器的类型
  15. 《JAVASCRIPT高级程序设计》原生拖放和媒体元素
  16. HTML知识点总结之表单元素
  17. iOS中判断照片和相机权限
  18. SQL Server 表的管理_关于完整性约束的详解(案例代码)
  19. K个排序链表的合并(Hard)
  20. 函数中不能对全局变量进行修改,想要修改全局变量需要在变量前面加global

热门文章

  1. powershell.exe WannaCrypt(永恒之蓝) down.bddp.net
  2. 配置nRF52832 的NFC 专用引脚为 GPIO
  3. React中父子组件传值
  4. Tkinter 之使用PAGE工具开发GUI界面
  5. 差分形式的牛顿插值法(c++)
  6. 【算法编程 C++ Python】字符串替换
  7. ssm框架中,项目启动过程以及web.xml配置详解
  8. [Beta]第二次 Scrum Meeting
  9. Python模块安装方法
  10. c#修改webservice 的地址和端口(修改配置文件)