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();
        }
    }
}
相关推荐
认真的酒窝10 分钟前
自己动手开发编译器(十一)语义分析
java·开发语言
wbs_scy2 小时前
Linux C++ 高并发编程:线程池全链路深度解析,从原理到手撕实现
java·开发语言
JAVA面经实录9172 小时前
Linux 常用命令完整知识体系
java·linux·开发语言·汇编
Full Stack Developme3 小时前
Java LRU 与 LFU 算法及应用
java·开发语言·算法
程序员老油条5 小时前
WSL2 + Docker Desktop:Windows 下的完美 Java 开发环境
java·windows·docker·wsl2
shushangyun_6 小时前
2026智能采购商城系统选型指南:如何引领企业数字化采购升级
java·大数据·数据库·人工智能·机器学习
她说..6 小时前
Java 默认值设置方式
java·开发语言·后端·springboot
学渣超7 小时前
记一次分布式事务数据不一致的排查之旅:从超时到索引,层层剥茧
java·后端·架构
掉鱼的猫7 小时前
Agent Harness 实战指南:构建生产级 AI Agent 的"马具"框架
java·llm·aigc
带刺的坐椅7 小时前
Agent Harness 实战指南:构建生产级 AI Agent 的"马具"框架
java·ai·llm·agent·solon-ai