Spring 的后置通知虽然如其名字那样,通知在方法调用之后织入。但准确的说,通知是在方法返回值之后和方法返回到调用地点之前被织入。我们可以通过Spring 自带的AfterReturningAdvice 接口轻松的实现方法的织入。AfterReturningAdvice 接口提供了afterReturning 方法来实现通知,即在afterReturning 方法中定义通知。afterReturning 方法接受目标方法的返回值,目标方法,目标方法需要的参数和目标对象。从参数列表中我们可以知道我们无法再对目标方法的返回值进行更改(如果需要对目标方法的返回值进行更改可以通过MehtodInterceptor 接口来实现)。
PS:如果目标方法没有返回值,那么afterReturning 方法接受到的目标方法返回值为null,并不抛出异常。
例子如下:
1)后置通知代码
public class After implements AfterReturningAdvice
{
public void afterReturning(Object returnValue, Method method, Object[] args, Object target) {
System.out.println("After.afterReturning()");
System.out.println("return value: " + returnValue);
System.out.println("method name: " + method.getName());
Type[] type = method.getGenericParameterTypes();
for(int i = 0; i < type.length; i++) {
System.out.println(type[i].toString() + ": " + args[i]);
}
System.out.println("target: " + target.toString());
//返回值更改
//无效
returnValue = new String("after");
System.out.println("");
}
}
2)目标对象
public class Target implements Advice
{
public String test(int i, String s, float f) {
System.out.println("Target.test()");
System.out.println("target: " + this);
StringBuffer buf = new StringBuffer();
buf.append( "i = " + i);
buf.append( ", s = \"" + s + "\"");
buf.append( ", f = " + f);
return buf.toString();
}
}
3)接口定义
public interface Advice
{
String test(int i, String s, float f);
}
4)配置文件
<beans>
<bean id="after" class="spring.After"/>
<bean id="aop" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces" value="spring.Advice" />
<property name="interceptorNames">
<list>
<value>after</value>
</list>
</property>
<property name="target">
<bean class="spring.Target" />
</property>
</bean>
</beans>
分享到:
相关推荐
Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是...Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。
NULL 博文链接:https://chaoyi.iteye.com/blog/2166024
spring的Aop中的前置通知,后置通知以及环绕通知简单代码
1、编写切面类,包含权限审核方法和日志记录方法,这两个方法将来会织入到...5、编写案例,运用Spring AOP技术,要求包含前置通知、后置通知、环绕通知、返回通知、异常返回通知。请掌握这五种通知的特点,及应用场景
NULL 博文链接:https://zhangyulong.iteye.com/blog/857387
NULL 博文链接:https://z18022893621.iteye.com/blog/1956146
NULL 博文链接:https://java-frog.iteye.com/blog/325364
本例是一个很好的springAop使用例子,例子举例了spring的前置通知和后置通知的使用方法。用以拦截操作日志。
本人笔记中的源代码,Spring中的5种通知和3种加载通知的方式,五个通知包括:前置通知、后置通知、环绕通知、异常通知、引用通知。三种加载方式:默认加载、按名字加载、代理类加载
spring框架的aop前置、后置、环绕、异常通知以及自定义切入点实例
Spring spectJ AOP 前置通知 后置通知 返回通知 异常通知 环绕通知
关于AOP注解前置通知、后置通知、返回通知、异常通知的注解注释及应用
spring前置后置环绕通知,以及所需要jar
AOP程序 Spring框架 前置通知 后置通知 异常通知 环绕通知
Bean、通过 FactoryBean 配置 Bean、通过注解配置 Bean、泛型依赖注入、AOP 基础、前置通知、后置通知、返回通知、异常通知、环绕通知、切面的优先级、切点表达式、使用 XML 文件的方式配置 AOP、使用 JdbcTemplate ...
一. 准备工作 二. Spring -Aop入门 三. Spring-Aop 前置通知、后置通知、环绕通知、异常通知实现 四. Spring-Aop 之Pointcut+advice+Advisor 实现 五.Spring-Aop 引入的介绍
一个基于配置文件的Spring AOP的实现。实现了前置通知,后置通知,以及拦截器的功能,配置中有详细的注释。
Spring AOP支持不同类型的通知,如前置通知(Before)、后置通知(After)、返回后通知(After-returning)、抛出异常后通知(After-throwing)和环绕通知(Around)。这种机制使得开发者可以在运行时动态地应用这些...
NULL 博文链接:https://baobeituping.iteye.com/blog/1208293