`
hwpok
  • 浏览: 250577 次
  • 性别: 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 实现源代码--xml and annotation(带lib包)

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

    spring_AOP实现方法大全

    Spring AOP通过动态代理机制实现了AOP的功能,提供了四种主要的Advice类型:Before Advice、After Advice、Around Advice和Throw Advice。 1. **Before Advice**: Before Advice在目标方法执行之前被调用。如果你...

    个人对spring实现AOP的方法总结

    Spring AOP支持四种类型的Advice:Before Advice、After Advice、Around Advice、Throw Advice。 Before Advice顾名思义,在目标对象的方法执行之前被调用。开发者可以通过实现org.springframework.aop....

    Spring  AOP实现方法大全

    例如,使用`@Before`、`@After`、`@Around`和`@Throws`注解可以直接在方法上声明Advice。 总结来说,Spring AOP通过四种类型的Advice提供了灵活的横切关注点实现,使得我们可以将关注点从核心业务逻辑中分离出来,...

    spring-aop实例

    **通知(Advice)**:通知是在特定的连接点(join point)执行的代码,它可以是前置通知(before advice)、后置通知(after advice)、返回通知(return advice)、异常通知(throw advice)以及环绕通知(around ...

    aop的详细总结(包含例子)

    2. Advice(通知):在特定Joinpoint上执行的代码,根据执行时机不同,包括Before、Afterreturning、Throw、Around和After(最终)通知。 3. Pointcut(切点):一组Joinpoint,定义了哪些Joinpoint将会应用Advice。...

    aop 权限验证demo

    在Spring AOP中,可以使用`@Aspect`注解定义一个切面类,然后使用`@Before`, `@After`, 或 `@Around` 注解定义通知。例如: ```java @Aspect public class PermissionValidator { @Before("execution(* ...

    AOP.rar_cours

    通知可以是前置通知(before advice)、后置通知(after advice)、返回通知(return advice)、异常通知(throw advice)和环绕通知(around advice),分别在方法调用前、后、返回时、抛出异常时以及包围方法执行...

    第五章示例代码__AOP入门

    通知是在连接点上执行的代码,它可以是环绕通知(around advice)、前置通知(before advice)、后置通知(after advice)、返回通知(return advice)和异常通知(throw advice)。每种类型的的通知执行时机不同,...

    Spring aop.rar

    - 前置通知(Before Advice):在目标方法调用之前执行。 - 后置通知(After Returning Advice):在方法正常返回后执行。 - 异常后通知(After Throwing Advice):在方法抛出异常后执行。 - 最终通知(After...

    aop权限代码

    此外,我们还可以定义其他的切面通知,如`@After`(后置通知)、`@Around`(环绕通知)、`@AfterThrowing`(异常后通知)和`@AfterReturning`(正常返回后通知),根据需求灵活地进行权限控制。 在实际项目中,权限...

    spring aop的注解配置中,前置,后置,环绕通知,以及异常通知怎么获得被代理方法的参数

    1. **前置通知(Before Advice)** 前置通知在目标方法执行之前运行,通常用于执行校验、日志记录等操作。在Spring AOP中,我们可以使用`@Before`注解来定义一个前置通知。这个注解的参数是一个字符串,该字符串...

    Spring AOP 实例

    首先,定义一个切面类,使用`@Aspect`注解标记,然后使用`@Before`和`@After`注解来指定在目标方法执行前后的advice(通知)。例如,我们可以定义一个`logBefore()`和`logAfter()`方法,它们分别记录方法的开始和...

    aop实现权限校验的过程

    可以使用`@Before`、`@After`、`@Around`等注解定义前置、后置、环绕通知。对于权限校验,通常使用`@Before`注解,因为它可以在方法执行前进行校验。 ```java @Before("execution(* com.example.service.*.*(..))...

    spring-aop-3.2.0.RELEASE-sources.jar.zip

    Spring支持五种不同类型的建议:前置通知(Before)、后置通知(After)、返回后通知(After Returning)、异常后通知(After Throwing)和环绕通知(Around)。 3. 切面(Aspect):结合了切点和通知的实体,是...

    spring 要点总结

    - **Around Advice**:包围目标方法执行,提供最全面的控制,实现 `MethodInterceptor` 接口。 - **Introduction Advice**:添加新的方法和属性到目标类,需要自定义实现并配置 `DefaultIntroductionAdvisor`。 7...

    sping AOP 权限管理方案浅析

    在Spring中,我们可以使用`@Aspect`注解来声明一个类为切面,并通过`@Before`、`@After`、`@Around`等注解来定义不同类型的前置、后置、环绕通知。对于权限管理,我们通常使用`@Before`注解,因为它允许我们在方法...

    AOP-with-Spring:方面的简单用法

    通知是在特定连接点执行的代码块,可以分为前置通知(before advice)、后置通知(after advice)、返回通知(return advice)、异常通知(throw advice)和环绕通知(around advice)。Spring支持使用注解定义通知...

    springboot配置aop切面日志打印过程解析

    * Advice(通知):Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,它通过(before、around、after(return、throw)、finally 来区别实在每个 Joint point 之前、之后还是执行前后要调用的代码。...

    面向切面例子

    首先,我们需要创建一个通知,这通常是一个带有`@Before`、`@After`、`@Around`等注解的方法。`@Around`注解的特殊之处在于它允许我们在方法调用前后执行自定义逻辑,非常适合用于性能监测。下面是一个简单的`@...

Global site tag (gtag.js) - Google Analytics