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();
        }
    }
}
相关推荐
阿维的博客日记19 小时前
Hippo4j 线程池监控平台部署手册
java·spring boot·后端
C+++Python21 小时前
详细介绍一下Java泛型的通配符
java·windows·python
JosieBook1 天前
【数据库】时序预测能力的分级进化:TimechoAI如何让每一类用户都能精准预见未来
java·开发语言·数据库
一生了无挂1 天前
Java处理JSON技巧教学(从基础到高阶实战全覆盖)
java·开发语言·json
李白的天不白1 天前
使用 SmartAdmin 进行前后端开发
java·前端
swordbob1 天前
Spring 单例 Bean 是线程安全的吗?
java·开发语言
2601_951643771 天前
Python第一,Java跌出前三,C语言杀回来了
java·c语言·python·编程语言排行·技术趋势
腾科IT教育1 天前
Spring AI Alibaba 向量(VectorStore)
人工智能·spring·microsoft
IT 行者1 天前
GitHub Spec Kit 实战(五):/speckit.tasks 怎么拆——Spec Kit 五部曲收官
java·ai编程·claude
(Charon)1 天前
【C++ 面试高频基础:指针、引用、const、static、new/delete 总结】
java·开发语言