`
hwpok
  • 浏览: 242142 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

AOP Before Advice After Advice Around Advice Throw Advice

阅读更多
Before Advice:
package com.hwp.aop.adviceDemo;

import java.lang.reflect.Method;

import org.springframework.aop.MethodBeforeAdvice;

public class BeforeAdviceDemo implements MethodBeforeAdvice {

    
public void before(Method method, Object[] args, Object target)
            
throws Throwable {
        System.out.println(
"在方法运行前,先运行");
    }

    
}

After Advice:
package com.hwp.aop.adviceDemo;

import java.lang.reflect.Method;

import org.springframework.aop.AfterReturningAdvice;

public class AfterAdviceDemo implements AfterReturningAdvice{

    
public void afterReturning(Object arg0, Method arg1, Object[] arg2,
            Object arg3) 
throws Throwable {
        System.out.println(
"方法执行后.");
        
    }

    
}

Round Advice:
package com.hwp.aop.adviceDemo;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

public class AroundAdviceDemo implements MethodInterceptor {

    
public Object invoke(MethodInvocation arg0) throws Throwable {
        System.out.println(
"在round方法里,方法开始前..");
        Object result 
= null;
        
try {
            result 
= arg0.proceed();
        }
 finally {
            System.out.println(
"在round方法里,方法结束后");
        }

        
return result;
    }


}

Throw Advice:
package com.hwp.aop.adviceDemo;

import java.lang.reflect.Method;

import org.springframework.aop.ThrowsAdvice;

public class ThowAdviceDemo implements ThrowsAdvice {
    
public void afterThrowing(Method method, Object[] args, Object target,
            Throwable subclass) 
{
        System.out.println(
"异常抛出后..");
    }


}

beans.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
>
    
<bean id="logBeforeAdvice"
        class
="com.hwp.aop.adviceDemo.BeforeAdviceDemo" />
    
<bean id="logAfterAdvice"
        class
="com.hwp.aop.adviceDemo.AfterAdviceDemo" />
    
<bean id="logRoundAdvice"
        class
="com.hwp.aop.adviceDemo.AroundAdviceDemo" />
    
<bean id="throwAdvice"
        class
="com.hwp.aop.adviceDemo.ThowAdviceDemo" />
    
<bean id="helloSpeaker" class="com.hwp.aop.adviceDemo.HelloSpeaker" />
    
<bean id="helloProxy"
        class
="org.springframework.aop.framework.ProxyFactoryBean">
        
<property name="proxyInterfaces"
            value
="com.hwp.aop.adviceDemo.IHello" />
        
<property name="target" ref="helloSpeaker" />
        
<property name="interceptorNames">
            
<list>
                
<value>logBeforeAdvice</value>
                
<value>logAfterAdvice</value>
                
<value>logRoundAdvice</value>
                
<value>throwAdvice</value>
            
</list>
        
</property>
    
</bean>
</beans>
Demo:
package com.hwp.aop.adviceDemo;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringAOPDemo {
    
public static void main(String[] args){
        ApplicationContext context 
= 
            
new ClassPathXmlApplicationContext("beans-beforeAdvice.xml");
        IHello helloProxy 
= (IHello) context.getBean("helloProxy");
        
try{
            helloProxy.hello(
"惠万鹏");
        }
catch(Exception e){
            
//e.printStackTrace();
        }

    }

}

收工....

分享到:
评论

相关推荐

    Spring  AOP实现方法大全

    Spring根据Adivce加入到业务流程的时机的不同,提供了四种不同的Advice:Before Advice、After Advice、Around Advice、Throw Advice。 1、Before Advice 顾名思义,Before Advice会在目标对象的方法执行之前被调用...

    org.aopalliance.aop.Advice.jar

    org.aopalliance.aop.Advice.jar net.springsource.cglib-2.2.0.jar

    spring aop 实现源代码--xml and annotation(带lib包)

    Spring根据Adivce加入到业务流程的时机的不同,提供了四种不同的Advice:Before Advice、After Advice、Around Advice、Throw Advice。 1、Before Advice 顾名思义,Before Advice会在目标对象的方法执行之前被调用...

    spring aop API示例

    演示了spring对aop的before、after、throw、around几种advice的api操作。

    Spring AOP - Advice

    Source 博文链接:https://icz.iteye.com/blog/186074

    Spring_AOP_before.rar_AOP@before怎么用_Before

    Spring_AOP_before的使用

    Spring中的AOP(五)——在Advice方法中获取目标方法的参数

    NULL 博文链接:https://lihaiming.iteye.com/blog/2273380

    jquery-aop:向 jQuery 添加面向方面编程 (AOP) 的功能

    它允许向任何全局或实例对象添加( Before 、 After 、 After Throw 、 After finally 、 Around和Introduction )。 特征 允许添加Before , After , After Throw , After finally , Around和Introduction建议...

    Spring AOP详细介绍.docx

    (3)Advice(通知):AOP在特定的切入点上执行的增强处理,有before,after,afterReturning,afterThrowing,around (4)Pointcut(切入点):就是带有通知的连接点,在程序中主要体现为书写切入点表达式 (5)AOP代理:AOP框架...

    SpringAOP:Spring AOP示例

    SpringAOP Spring AOP(面向方面​​的编程)用于模块化“横截面”服务。 用一种简单的方式,我们可以说它是一个旨在拦截某些进程的组件,例如,在执行某个方法时,Spring AOP可以审核该执行方法,并在该方法执行...

    spring AOP的After增强实现方法实例分析

    主要介绍了spring AOP的After增强实现方法,结合实例形式分析了spring面向切面AOP的After增强实现步骤与相关操作技巧,需要的朋友可以参考下

    AOP 和 Aspect 注解切入 测试 Demo

    AOP 和 Aspect 注解切入 测试 Demo 1.ProxyFactory 基于 MethodBeforeAdvice、AfterReturningAdvice 利用 Spring Api...基于注解的形式:@Aspect、@PointCut、@Before、@Around、@After、@AfterRunning、@AfterThrowing

    Spring 2.0 AOP 完整例子

    网上找了很多例子多数都不能运行。包括after,before,round,throw切入,可对类直接拦截,不需要定义接口文件,自己研究了2天整理出来的。 Spring AOP 的完整例子,可直接运行。带jar包。

    aopalliance和aspectjweaver和javassist

    aopalliance-1.0.jar aspectjweaver-1.5.3.jar javassist-3.9.0.GA.jar 解决java.lang.ClassNotFoundException: org.aopalliance.aop.Advice的问题

    spring aop spring aop

    spring aop spring aop spring aop spring aop spring aop spring aop spring aop spring aop spring aop

    Javascript aop(面向切面编程)之around(环绕)分析

    Aop又叫面向切面编程,其中“通知”是切面的具体实现,分为before(前置通知)、after(后置通知)、around(环绕通知),用过spring的同学肯定对它非常熟悉,而在js中,AOP是一个被严重忽视的技术点。但是利用aop...

    Spring实现AOP的多种方式 切点函数

    里面包括4个例子:(1)Spring实现AOP方式之一:基于XML配置的Spring AOP (2)Spring实现AOP方式之二:使用注解配置 Spring AOP (3)Spring AOP : AspectJ Pointcut 切点 (4)Spring AOP : Advice 声明 (通知注解)

Global site tag (gtag.js) - Google Analytics