栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC - XML配置AOP方法案例详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC - XML配置AOP方法案例详解

文章目录
  • XML配置AOP详解
    • 切点表达式的写法
      • 尝试修改spring.xml的织入
      • 成功测试
    • 通知类型
      • 修改通知类(后置增强)
        • 增加切面/增加通知
        • 成功测试
      • 修改通知类(切点环绕)
        • 编写切面/编写通知
        • 成功测试
      • 修改通知类(异常抛出)
        • 编写目标类(制造异常)
        • 编写切面/编写通知
        • 成功测试
      • 修改通知类(最终增强)
        • 编写切面/编写通知
        • 成功测试
  • 切点表达式抽取
    • 抽取案例
    • 成功测试

XML配置AOP详解 切点表达式的写法

表达式语法:

execution{[修饰符]返回值类型 包名.类名.方法名(参数)}

尝试修改spring.xml的织入

        
            
        
    
成功测试

通知类型

修改通知类(后置增强)

MyAspect.java

添加一个方法

package com.taotao.aop;


@SuppressWarnings({"all"})
public class MyAspect {
    public void before(){
        System.out.println("前置增强....");
    }

    public void afterReturning(){
        System.out.println("后置增强.....");
    }
}

增加切面/增加通知

修改Spring.xml

    

        

            
            
        
    
成功测试

修改通知类(切点环绕)

添加around()方法

package com.taotao.aop;

import org.aspectj.lang.ProceedingJoinPoint;


@SuppressWarnings({"all"})
public class MyAspect {
    //Proceeding JoinPoint:正在执行的连接点 === 切点
    public void around(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("环绕前增强...");

        Object proceed = pjp.proceed(); //切点方法

        System.out.println("环绕后增强...");
    }
}

编写切面/编写通知

编写Spring.xml


    

        

            
        
    
成功测试

修改通知类(异常抛出)
package com.taotao.aop;

import org.aspectj.lang.ProceedingJoinPoint;


@SuppressWarnings({"all"})
public class MyAspect {
        //Proceeding JoinPoint:正在执行的连接点 === 切点
    public void around(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("环绕前增强...");

        Object proceed = pjp.proceed(); //切点方法

        System.out.println("环绕后增强...");
    }
    
    public void afterThrowing(){
        System.out.println("异常抛出增强......");
    }

}

编写目标类(制造异常)
package com.taotao.aop;


@SuppressWarnings({"all"})
public class Target implements TargetInterface {
    @Override
    public void save() {
        int i = 1 / 0;
        System.out.println("正在存储数据....");
    }
}

编写切面/编写通知

    

        

            
            
            
        
    
成功测试

修改通知类(最终增强)
package com.taotao.aop;

import org.aspectj.lang.ProceedingJoinPoint;


@SuppressWarnings({"all"})
public class MyAspect {
    public void before(){
        System.out.println("前置增强....");
    }

    public void afterReturning(){
        System.out.println("后置增强.....");
    }

    //Proceeding JoinPoint:正在执行的连接点 === 切点
    public void around(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("环绕前增强...");

        Object proceed = pjp.proceed(); //切点方法

        System.out.println("环绕后增强...");
    }

    public void afterThrowing(){
        System.out.println("异常抛出增强......");
    }
    
    public void after(){
        System.out.println("最终增强...");
    }

}

编写切面/编写通知

    

        

            

            
            
            
        
    
成功测试

切点表达式抽取

抽取案例

    

        


            


            

        
    
成功测试

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/839037.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号