SpringAop
一.基于xml的Aop配置
目标类
package com.yqg.aop2;
import java.lang.reflect.UndeclaredThrowableException;
/**
* @author yqg
* @date 2019-02-18 19:36
*/
public class MaJiang {
public void hule(){
System.out.println("自摸,爽");
}
}
切面类
package com.yqg.aop2;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
/**
* @author yqg
* @date 2019-02-18 19:37
*/
public class Aspect {
public void before(){
System.out.println("我听牌了");
}
public void after(){
System.out.println("快给钱");
}
public void exception(){
System.out.println("我诈糊了");
}
public void around(ProceedingJoinPoint joinPoint){
System.out.println("我听牌了啊");
try {
joinPoint.proceed();
} catch (Throwable throwable) {
System.out.println("我诈糊了啊");
throwable.printStackTrace();
}
System.out.println("快给钱啊");
}
}
xml配置
<!--目标对象-->
<bean id="maJiang" class="com.yqg.aop2.MaJiang"></bean>
<!--切面对象-->
<bean id="aspect" class="com.yqg.aop2.Aspect"></bean>
<aop:config>
<aop:aspect ref="aspect">
<aop:pointcut id="pointcut" expression="execution(* *.hule(..))"></aop:pointcut>
<aop:before method="before" pointcut-ref="pointcut"></aop:before>
<aop:after method="after" pointcut-ref="pointcut"></aop:after>
<aop:after-throwing method="exception" pointcut-ref="pointcut"></aop:after-throwing>
<aop:around method="around" pointcut-ref="pointcut"></aop:around>
</aop:aspect>
</aop:config>
二.基于注解的Aop配置
package com.yqg.aopannotation;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.stereotype.Component;
/**
* @author yqg
* @date 2019-02-18 19:37
*/
@Component
@org.aspectj.lang.annotation.Aspect
@EnableAspectJAutoProxy
public class Aspect {
@Pointcut("execution(* com.yqg.aopannotation.MaJiang.zimo(..))")
public void pointcut(){}
@Before(value = "pointcut()")
public void before(){
System.out.println("我听牌了");
}
@After("pointcut()")
public void after(){
System.out.println("快给钱");
}
@AfterThrowing("pointcut()")
public void exception(){
System.out.println("我诈糊了");
}
@Around("pointcut()")
public void around(ProceedingJoinPoint joinPoint){
System.out.println("我听牌了啊");
try {
joinPoint.proceed();
} catch (Throwable throwable) {
System.out.println("我诈糊了啊");
throwable.printStackTrace();
}
System.out.println("快给钱啊");
}
}
浙公网安备 33010602011771号