Spring AOP(XML后置+异常通知)

后置通知


AuditAspect.java

java 复制代码
package com.hk.eshop.aop;


import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;

public class AuditAspect {
    public void audit(JoinPoint joinPoint,String returnValue)
    {
        Object[] args = joinPoint.getArgs();
        Signature sig = joinPoint.getSignature();
        System.out.println("触发方法......"+sig.getName());
        System.out.println("方法审计开始......");
        for(int i=1;i<=args.length;i++)
            System.out.println("第"+i+"个参数="+args[i-1]);
        System.out.println("方法审计结束......");
        System.out.println("切入点表达式......"+joinPoint.toString());
        System.out.println("目标方法返回值......"+returnValue);
    }
}

UserMng.java

java 复制代码
package com.hk.eshop.aop;

import com.hk.eshop.java.IUserMng;

public class UserMng{
    public String save(String id, String name) {
        System.out.println("save() id="+id+",name="+name);
        return "save() id="+id+",name="+name;
    }

    public String find(String id) {
        System.out.println("find() id="+id);
        return "find() id="+id;
    }
}

异常通知




异常切面代码

java 复制代码
package com.hk.eshop.aop;


import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;

public class AuditOrgAspect {
    public void audit(JoinPoint joinPoint,Throwable throwValue)
    {
        Object[] args = joinPoint.getArgs();
        Signature sig = joinPoint.getSignature();
        System.out.println("触发方法......"+sig.getName());
        System.out.println("方法审计开始......");
        for(int i=1;i<=args.length;i++)
            System.out.println("第"+i+"个参数="+args[i-1]);
        System.out.println("方法审计结束......");
        System.out.println("切入点表达式......"+joinPoint.toString());
        System.out.println("目标方法抛出异常......"+throwValue);
    }
}


package com.hk.eshop.aop;

public class OrgExistException extends Exception{
    public OrgExistException(String msg)
    {
        super(msg);
    }
}


package com.hk.eshop.aop;

public class OrgNotFoundException extends Exception{
    public OrgNotFoundException(String msg)
    {
        super(msg);
    }
}


package com.hk.eshop.aop;

public class OrgMng {
    public String save(String id, String name) throws OrgExistException{
        if(id.equals("root"))
            throw new OrgExistException("Root Org exists...");
        System.out.println("save() id="+id+",name="+name);
        return "save() id="+id+",name="+name;
    }

    public String find(String id) throws OrgNotFoundException{
        if(id.equals("root"))
            throw new OrgNotFoundException("Root Org no found...");
        System.out.println("find() id="+id);
        return "find() id="+id;
    }
}



package com.hk.eshop.aop;

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

public class Main {
    public static void main( String[] args )
    {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
        UserMng umng = (UserMng)ctx.getBean("userMng");
        umng.save("1","Java");
        umng.find("2");
        System.out.println("############################################");
        try {
            OrgMng omng = (OrgMng) ctx.getBean("orgMng");
            omng.save("root", "Java");
            omng.find("root");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}
相关推荐
硅基诗人5 小时前
Java后端高并发核心瓶颈突破(JVM+并发+分布式底层实战)
java·jvm·分布式
聆听。。花开雨落5 小时前
intelij idea闪退后再启动tomcat报错端口冲突
java·tomcat·intellij-idea
Java面试题总结5 小时前
Spring Boot 包扫描新姿势:AutoScan vs @Import vs @ComponentScan 深度对比
java·数据库·spring boot
花千树-0105 小时前
McpAgentExecutor 混合挂载:HTTP 工具与 NPX 服务器同时接入同一 Agent
java·agent·function call·spring ai·mcp·toolcall·java ai
mobai75 小时前
使用pyang将yang模型转换为xml
xml·运维·服务器
XiYang-DING5 小时前
【Java】反射
java·开发语言
ACGkaka_5 小时前
JDK 版本管理工具介绍:jenv与sdkman(Mac端)
java·macos·sdkman
阿坤带你走近大数据5 小时前
数据API接口的数据源和目标源分别是什么?怎么设置?
java·python·api
若阳安好5 小时前
【java】任务流批处理平台
java·开发语言
艾莉丝努力练剑5 小时前
【Linux线程】Linux系统多线程(六):<线程同步与互斥>线程同步(上)
java·linux·运维·服务器·c++·学习·线程