基于接口的动态代理要求,要去被代理对象最少实现一个接口
基于子类的动态代理没有实现接口的要求。但是要求我们的被代理类不能是最终类

在Spring中可以选择基于接口还是子类的动态代理

术语

大白话。业务层看到方法就都是连接点。IAccountService中的方法。它是连接什么的呢? 连接我们的业务和增强方法中的那个点。
那么如何把增强的代码也就是事物控制的代码加到我们的业务中来

这些方法可以加上事物的支持。从而让我们的业务方法,形成完整的业务逻辑

PointCut切入点


在业务层中新写一个方法

创建动态代理的时候,不区分哪个方法全部加了事物

写上代码判断,当方法是test的时候,直接return 返回。这样不是业务层的所有方法都被事务支持了。test方法就没有事务的支持

切入点就是被增强的方法。那么test方法没有被增强就不是切入点。
test()方法是连接点。

所有的切入点都是连接点。但所有的连接点不一定都是切入点

advice增强


通知就是拦截到之后要干的事情
invoke方法拦截到后,提供了事物的支持

TansactionManager就是通知。拦截到之后,就是对它进行事物的支持

通知分为这种类型

方法之后的就是后置通知,在catch里面的就是异常通知。finally里面的就是最终通知。

Introducation引介

现阶段用不到,作为了解即可

target目标对象

就是被代理对象

accountService就是被代理对象

weaving织入


原有的Service没法实现事务的支持

于是用了动态代理技术。创建了一个新的对象,返回了一个代理对象。

在返回代理对象的时候 从中加入了事务的支持。加入事物支持的过程叫做织入

proxy代理


retunr 创建出来的这个对象就是proxy

Aspect切面


切入点就是这里哪些方法被增强过

通知就是提供了公共代码的类

公共代码什么时候去执行呢?
建立接入点方法和通知方法再执行调用的对应关系。就是切面。

配置他们之间的对应关系,哪个Service。哪些方法,这些方法何时执行。整个的过程配置出来 就是切面。

明确的事情

阶段3 2.Spring_08.面向切面编程 AOP_2 spring中的aop术语和细节的更多相关文章

  1. 阶段3 2.Spring_08.面向切面编程 AOP_8 spring中的环绕通知

    环绕通知.method属性需要新加一个方法 在logger内中新加aroundPringLog方法 异常代码先注释掉 对比现在的环绕通知和之前写代理类做的环绕通知.右侧的方法内有明确的业务层方法(切入 ...

  2. 阶段3 2.Spring_08.面向切面编程 AOP_9 spring基于注解的AOP配置

    复制依赖和改jar包方式 src下的都复制过来. 复制到新项目里了 bean.xml里面复制上面一行代码到下面.把aop改成context. 配置spring容器创建时要扫描的包 Service的配置 ...

  3. 阶段3 2.Spring_08.面向切面编程 AOP_4 spring基于XML的AOP-配置步骤

    resources下新建bean.xml文件 xmlns:aop 先配置IOC aop 通知类就是logger.id配置为logAdvice表示日志的通知 梳理流程 首先我们在这有个Service它需 ...

  4. 阶段3 2.Spring_08.面向切面编程 AOP_3 spring基于XML的AOP-编写必要的代码

    新建项目 先改打包方式 导包,就先导入这俩包的坐标 aspectjweaver为了解析切入点表达式 新建业务层接口 定义三个方法 看返回和参数的区别.为了把这三类方法表现出来,并不局限于方法干什么事 ...

  5. 阶段3 2.Spring_08.面向切面编程 AOP_7 通用化切入点表达式

    下面配置了通用的表达式,,上面的四个就不用再配置那么长 索罗的切入点表达式了. 节省了每次都要写一长段表达式的过程 写在一个aop:aspect这个切面下面就只能当前切面用 写在切面里面 运行测试 挪 ...

  6. 阶段3 2.Spring_08.面向切面编程 AOP_10 总结和作业安排

    由转账添加事物,使得我们的操作变的非常麻烦.重复代码产生了很多 实际的开发中如果想记录日志每个方法都要执行 如果判断用户是否登陆也是每个方法都需要判断 这些重复的代码我们都需要去解决. 解决的方式,以 ...

  7. 阶段3 2.Spring_08.面向切面编程 AOP_6 四种常用通知类型

    新建项目 复制上节课的pom.xml内的代码 复制java下的代码 测试类也复制过来 配置文件也拷贝过来 logge下增加几个方法 测试方法只需要一个saveAccount方法就可以了 增加其他三种通 ...

  8. 阶段3 2.Spring_08.面向切面编程 AOP_5 切入点表达式的写法

    写测试类来测试..也不需要整合JUnit了就是个普通的测试类. 我们要看就是有没有给我们真正的实现 记录日志 配置起作用了. 三个方法都调用一下 目前我们的配置只能对saveAccount增强 通常情 ...

  9. 阶段3 2.Spring_08.面向切面编程 AOP_1 AOP的概念

随机推荐

  1. python中的定时任务

    使用threading模块中的Timer函数 from threading import Timer import time def execute_func(name, age, gender, h ...

  2. Ansible批量远程管理Windows主机(部署与配置)

    一.测试环境介绍 Ansible管理主机: 系统:   CentOS6.8 IP Addr: 172.16.10.22 Linux管理服务器需安装pip.pywinrm插件 Windows客户端主机: ...

  3. Mandelbrot集合及其渲染

    什么是Mandelbrot集合? Mandelbrot集合是在复数平面上组成分形的点的集合,它正是以数学家Mandelbrot命名. Mandelbrot集合可以用复二次多项式 \[ f_c(z)=z ...

  4. 01--springmvc分布式项目Web项目配置

    springmvc的配置文件,放在resources目录下: 文件名:applicationContext-mvc.xml <?xml version="1.0" encod ...

  5. Vue多页面 按钮级别权限控制 directive指令控制

    利用driective 构建自己的指令,实现按钮级别权限 项目结构如下: 修改router.js { path: 'schools', name: '列表', component: () => ...

  6. IANA

    IANA,全称The Internet Assigned Numbers Authority,即互联网数字分配机构1. Internet已成为全球范围的网络.为保证其正常运作,全球有很多机构参与进来. ...

  7. 文件操作相关函数(POSIX 标准 open,read,write,lseek,close)

    POSIX标准 open函数属于Linux中系统IO,用于“打开”文件,代码打开一个文件意味着获得了这个文件的访问句柄. int fd = open(参数1,参数2,参数3): int fd = op ...

  8. JavaScript基础——JavaScript语法基础(笔记)

    JavaScript语法基础(笔记) 1.语言编码 JavaScript语言建立在Unicode字符集基础之上,因此脚本中,用户可以使用双字节的字符命名常量.变量或函数等. [示例] var 我=&q ...

  9. Win 7无法安装Microsoft .NET Framework 4.6.2

    造冰箱的大熊猫@cnblogs 2018/9/6 在Windows 7 64位计算机上安装某个软件时,安装程序提示需先安装Microsoft .NET Framework 4.6.2.本来以为小事一桩 ...

  10. python中assert的用法

    assert:断言 格式: assert 表达式 [, 参数] 当表达式为真时,程序继续往下执行: 当表达式为假时,抛出AssertionError错误,并将  参数  输出 举例: def foo( ...