Spring AOP创建BeforeAdvice和AfterAdvice实例
2024-10-20 20:57:06
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("访客");
}
执行效果:
最新文章
- OCIEnvNlsCreate 失败,返回代码为 -1,但错误消息文本不可用
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:5.安装Oracle RAC FAQ-RAC安装DB软件runInstaller看不到节点
- Word转图片(使用Spire.doc)
- 配置ConvenientBanner时出现的问题
- Linux 安装rar解压工具
- 快速开发 jQuery 插件的 10 大技巧(转)
- 如何把SKYPE的发送消息由enter改为ctrl+enter?
- HQL语句大全
- contos最小包安装完后一些准备
- MYSQL数据仓库infobright【备忘】
- 9、socket.io,websocket 前后端实时通信,(聊天室的实现)
- [c/c++] programming之路(15)、多维数组和二分查找法,小外挂
- for master
- [转] bss段、data段、text段
- (Gorails视频)使用推广链接(params[:ref]),增加注册用户!
- 6月3 Smarty基础读取配置
- MySql(九):MySQL性能调优——Schema设计的性能优化
- PAT Waiting in Line[转载]
- HDU 6103 Kirinriki(尺取法)
- Django_cookie+session
热门文章
- Eclipse各个版本及其对应代号、下载地址列表【转】
- Servlet使用反射机制
- Java-JUC(十三):现在有两个线程同时操作一个整数I,做自增操作,如何实现I的线程安全性?
- MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning
- A3C 算法资料收集
- golang rabbitmq 的学习
- 自定义Spring Boot内置tomcat的404页面
- [转]npm安装教程
- leetcode 266.Palindrome Permutation 、267.Palindrome Permutation II
- chartjs