Spring AOP创建BeforeAdvice和AfterAdvice实例
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("访客");
	}
执行效果:

Spring AOP创建BeforeAdvice和AfterAdvice实例的更多相关文章
- Spring AOP创建Throwdvice实例
		
1.异常发生的时候,通知某个服务对象做处理 2.实现throwsAdvice接口 接口实现: public interface IHello { public void sayHello(String ...
 - 阿里四面:你知道Spring AOP创建Proxy的过程吗?
		
Spring在程序运行期,就能帮助我们把切面中的代码织入Bean的方法内,让开发者能无感知地在容器对象方法前后随心添加相应处理逻辑,所以AOP其实就是个代理模式. 但凡是代理,由于代码不可直接阅读,也 ...
 - Spring AOP创建AroundAdvice实例
		
AroundAdvice 1.在方法之前和之后来执行相应的操作 2.实现MethodInterceptor接口 接口文件: public interface IHello { public void ...
 - Spring AOP 创建增强类
		
AOP联盟为增强定义了org.aopalliance.aop.Advice接口,Spring支持5种类型的增强: 1)前置增强:org.springframework.aop.BeforeAd ...
 - Spring AOP 创建切面
		
增强被织入到目标类的所有方法中,但是如果需要有选择性的织入到目标类某些特定的方法中时,就需要使用切点进行目标连接点的定位.增强提供了连接点方位信息:如织入到方法前面.后面等,而切点进一步描述织 ...
 - 基于注解的Spring AOP入门、增强Advice实例
		
这篇文章简单通过一个例子,介绍几种增强的基本配置,以方便spring框架初学者对aop的代码结构有个清楚的了解认识.首先,spring支持aop编程,支持aspectJ的语法格式来表示切入点,切面,增 ...
 - Spring AOP 创建Advice 定义pointcut、advisor
		
前面定义的advice都是直接植入到代理接口的执行之前和之后,或者在异常发生时,事实上,还可以对植入的时机定义的更细. Pointcut定义了advice的应用时机,在Spring中pointcutA ...
 - Spring AOP 创建Advice 基于Annotation
		
public interface IHello { public void sayHello(String str); } public class Hello implements IHello { ...
 - Spring AOP 源码分析 - 创建代理对象
		
1.简介 在上一篇文章中,我分析了 Spring 是如何为目标 bean 筛选合适的通知器的.现在通知器选好了,接下来就要通过代理的方式将通知器(Advisor)所持有的通知(Advice)织入到 b ...
 
随机推荐
- 【转】Resource Localization in YARN
			
一个Applciation运行在YARN上的流程为,从YARN Client向ResourceManager提交任务,将Applciation所需资源提交到HDFS中,然后ResourceManage ...
 - ranger 使用外置的solr
			
一.solrcloud部署 1.下载部署 1).下载二进制包 #wget http://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/8.3.0/so ...
 - 对5月13号中BaseDao方法进行优化改造,更接近于框架的编写
			
/* * 通用查询.更新升级版 * */ public class BaseDao2 { static { try { Class.forName(ConfigUtil.getValue(" ...
 - 分享一些好用的 Chrome 扩展
			
阅读本文大概需要 2.8 分钟. 前言 使用浏览器扩展程序可以使你的工作效率提高数倍不止,那么下面我就向大家分享一下我日常使用的扩展,可能大多数扩展大家都已经在使用了,不过也难免有一两个是你不知道的. ...
 - 微信小程序之数据缓存
			
关于缓存,举个示例,假定我不是通过微信授权登录的方式,小程序又是如何识别我登录后的身份呢???效果图: 这个功能我是通过缓存实现的. 关键核心代码如下: wx.setStorage({ key: 'u ...
 - python 安装setuptools、pip《转》
			
https://www.jianshu.com/p/e9ab614cad9b 安装setuptools 下载setuptools源码setuptools-25.2.0.tar.gz 地址:https: ...
 - Dolly
			
dolly - 必应词典 美['dɑli]英['dɒli] n.洋娃娃:(搬运重物的)台车 v.用独轮车运(物):用搅拌棒洗(衣):用捣棒捣碎(矿石) 网络多莉:多利:移动式摄影小车 变形复数:dol ...
 - Python多进程和多线程是鸡肋嘛?【转】
			
GIL是什么 Python的代码执行由 Python虚拟机(也叫解释器主循环,CPython版本)来控制,Python在设计之初就考虑到在解释器的主循环中,同时只有一个线程在运行.即每个CPU在任意时 ...
 - xadmin插件
			
from django.http import HttpResponse from xadmin.plugins.actions import BaseActionView class test(Ba ...
 - ABS函数 去掉金额字段值为负数问题
			
)) from OrderDetail