博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring第五章:AOP(Schema-based)
阅读量:4618 次
发布时间:2019-06-09

本文共 3622 字,大约阅读时间需要 12 分钟。

AOP

链接:https://pan.baidu.com/s/1qS-AaZHSLUwxYSjc9PHDYA

提取码:np2q

  1.AOP:中文名称面向切面编程

  2.英文名称:(Aspect Oriented Programming)

  3.正常程序执行流程都是纵向执行流程

    3.1 又叫面向切面编程,在原有纵向执行流程中添加横切面

    3.2 不需要修改原有程序代码

      3.2.1 高扩展性

      3.2.2 原有功能相当于释放了部分逻辑.让职责更加明确.

      

 

  4.面向切面编程是什么?

    4.1 在程序原有纵向执行流程中,针对某一个或某一些方法添加通,形成横切面过程就叫做面向切面编程.

  5.常用概念

    5.1 原有功能: 切点, pointcut

    5.2 前置通知: 在切点之前执行的功能. before advice

    5.3 后置通知: 在切点之后执行的功能,after advice

    5.4 如果切点执行过程中出现异常,会触发异常通知.throws advice

    5.5 所有功能总称叫做切面.

    5.6 织入: 把切面嵌入到原有功能的过程叫做织入

  6.spring 提供了 3AOP 实现方式 

    6.1 Schema-based

      6.1.1 每个通知都需要实现接口或类

      6.1.2 配置 spring 配置文件时在<aop:config>配置

        6.1.2.1  applicationContext.xml      

        6.1.2.2 实体类

 

package com.suncl.test;import org.springframework.aop.MethodBeforeAdvice;import java.lang.reflect.Method;/** * Created by SCL-PC on 2019/2/28. */public class MyBeforeAdvice implements MethodBeforeAdvice {    @Override    public void before(Method method, Object[] objects, Object o) throws Throwable {        System.out.println("执行前置通知");    }}
package com.suncl.test;import org.springframework.aop.AfterReturningAdvice;import java.lang.reflect.Method;/** * Created by SCL-PC on 2019/2/28. */public class MyAfterAdvice implements AfterReturningAdvice {    @Override    public void afterReturning(Object o, Method method, Object[] objects, Object o1) throws Throwable {        System.out.println("执行后置通知");    }}
package com.suncl.test;import org.aopalliance.intercept.MethodInterceptor;import org.aopalliance.intercept.MethodInvocation;/** * Created by SCL-PC on 2019/2/28. */public class MyArround implements MethodInterceptor {    @Override    public Object invoke(MethodInvocation methodInvocation) throws Throwable {        System.out.println("环绕-前置");        Object result = methodInvocation.proceed();//放行,调用切点方式        System.out.println("环绕-后置");        return result;    }}
package com.suncl.test;import org.springframework.aop.ThrowsAdvice;/** * Created by SCL-PC on 2019/2/28. */public class MyThrow implements ThrowsAdvice {    public void afterThrowing(Exception ex) throws Throwable {        System.out.println("MyThrow执行异常通过-schema-base 方式 ");    }}
package com.suncl.test;/** * Created by SCL-PC on 2019/2/28. */public class Demo {    public void demo(){        System.out.println("执行了demo方法");    }    public void demo1(){        System.out.println("执行了demo1方法");        int i = 1/0;    }    public void demo2(){        System.out.println("执行了demo2方法");        int i = 1/0;    }}

        6.1.2.3 测试类 

package com.suncl.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * Created by SCL-PC on 2019/2/28. */public class Test {    public static void main(String[] args) {        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");         Demo demo = ac.getBean("demo",Demo.class);        demo.demo();        demo.demo1();    }}

        6.1.2.4 运行结果

信息: Loading XML bean definitions from class path resource [applicationContext.xml]执行前置通知环绕-前置执行了demo方法环绕-后置执行后置通知执行了demo1方法MyThrow执行异常通过-schema-base 方式 Exception in thread "main" java.lang.ArithmeticException: / by zero    at com.suncl.test.Demo.demo1(Demo.java:14)

转载于:https://www.cnblogs.com/reload-sun/p/10454092.html

你可能感兴趣的文章
什么是线程同步,什么是线程异步?同步的好处与弊端
查看>>
图片拉伸方法以及修改图片渲染模式以及如何把一个控制器包装成一个导航控制器...
查看>>
Oracle中的 UPDATE FROM 解决方法
查看>>
鼠标经过图像改变实现
查看>>
二分查找法
查看>>
Spring3升级到Spring4时, 运行时出现找不到MappingJacksonHttpMessageConverter的情况
查看>>
详解缓冲区溢出攻击以及防范方法
查看>>
分布式事务解决方案(一) 2阶段提交 & 3阶段提交 & TCC
查看>>
android之网格布局和线性布局实现注册页面
查看>>
BZOJ 1014: [JSOI2008]火星人prefix( splay + hash )
查看>>
Windows下AngularJS 和 Git 搭建Angular HelloWorld开发环境
查看>>
安装ejabberd2并配置MySQL为其数据库
查看>>
蛇形填数(算法竞赛入门经典)
查看>>
angular repeat
查看>>
Ubuntu16.04系统安装后的10件真正必做之事 | 原创
查看>>
CF862B Mahmoud and Ehab and the bipartiteness 二分图染色判定
查看>>
android 图片圆角化控件
查看>>
不错的题目
查看>>
随我的记
查看>>
java第三次作业
查看>>