AOP简介

AOP (Aspect Oriented Programing) 称为:面向切面编程,它是一种编程思想。AOP 是 OOP(面向对象编程 Object Oriented Programming)的思想延续

AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码的编写方式(例如性能监视、事务管理、安全检查、缓存、日志记录等)

AOP核心思想

基于代理思想,对原来目标对象,创建代理对象,在不修改原对象代码情况下,通过代理对象,调用增强功能的代码,从而对原有业务方法进行增强

切面:需要代理一些方法和增强代码

AOP的应用场景

场景一:记录日志

场景二:监控方法运行时间 (监控性能)

场景三: 权限控制

场景四: 缓存优化 (第一次调用查询数据库,将查询结果放入内存对象, 第二次调用, 直接从内存对象返回,不需要查询数据库 )

场景五: 事务管理 (调用方法前开启事务, 调用方法后提交或者回滚、关闭事务 )

Spring AOP编程两种方式

方式一:Spring AOP使用纯Java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类植入增强代码(编程复杂,不推荐)

方式二:Spring 2.0 之后支持第三方 AOP框架(AspectJ ),实现另一种 AOP编程 (推荐)

AOP编程相关术语

1.Aspect(切面): 是通知和切入点的结合,通知和切入点共同定义了关于切面的全部内容—它的功能、在何时和何地完成其功能

2.joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点.

3.Pointcut(切入点):所谓切入点是指我们要对哪些joinpoint进行拦截的定义.通知定义了切面的”什么”和”何时”,切入点就定义了”何地”.

4.Advice(通知、增强):所谓通知是指拦截到joinpoint之后所要做的事情就是通知.通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)

5.Target(目标对象):代理的目标对象

6.Weaving(织入):是指把切面应用到目标对象来创建新的代理对象的过程.切面在指定的连接点织入到目标对象

7.Introduction(引入)(不要求掌握):在不修改类代码的前提下, Introduction可以在运行期为类动态地添加一些方法或Field.

AOP编程底层实现机制

AOP 就是要对目标进行代理对象的创建, Spring AOP是基于动态代理的,分别基于两种动态代理机制: JDK动态代理和CGLIB动态代理

方式一:JDK动态代理

JDK动态代理,针对目标对象的接口进行代理 ,动态生成接口的实现类 (必须有接口)

过程要点

1.必须对接口生成代理

2.采用Proxy对象,通过newProxyInstance方法为目标创建代理对象。

该方法接收三个参数 :

(1)目标对象类加载器

(2)目标对象实现的接口

(3)代理后的处理程序InvocationHandler

3.实现InvocationHandler 接口中 invoke方法,在目标对象每个方法调用时,都会执行invoke

最后

金三银四马上就到了,希望大家能好好学习一下这些技术点,需要领取这些学习资料和面试笔记的朋友请**赶紧点击这里免费获取!**

学习视频:

大厂面试真题:

4888/java-p7)**

学习视频:

[外链图片转存中…(img-z7RbOkCw-1627614206051)]

大厂面试真题:

Java岗面试:Java调用下载接口进行文件下载相关推荐

  1. 从GitHub火到了博客,共计1658页的《Java岗面试核心MCA版》,拿走不谢

    2019年我凭借一份<Java面试核心知识点>成功拿下了阿里.字节.小米等大厂的offer,两年的时间,为了完成我给自己立的flag(拿下一线互联网企业offer大满贯),即使在职也一直在 ...

  2. 从 GitHub 火到 CSDN 共计 1658 页的 Java 岗面试核心 PDF 版,拿走不谢

    2019 年 10 月 16 日,我凭借一份<Java 面试核心知识点>成功拿下了阿里.字节.小米等大厂的 offer,两年的时间,为了完成我给自己立的 flag(拿下一线互联网企业 of ...

  3. 【对号入座】15.2k-37.4k的Java岗面试真题,应届生秋招和老java跳槽面试都适用

    故事的开始 最近有很多人问,有什么方法能够快速提升自己,通过阿里.腾讯.字节跳动.京东等互联网大厂的面试,我觉得短时间提升自己最快的手段就是背面试题,最近总结了Java常用的面试题,分享给大家,内容包 ...

  4. 老公下班不回家,竟在公司硬肝这份2022最新大厂Java岗面试宝典

    老公下班不回家,竟然在公司硬肝这份2020最新大厂Java岗面试宝典 2022-03-16 20:14·马小聪 前言 过去2年我持续分享了BAT TMD为代表的大厂最新面试题目,特别是蚂蚁金服.天猫. ...

  5. 熬夜两天盘点2022年Java岗面试被问得最多的100道题

    刚刚过去的秋招也是有人欢喜有人愁,不知道在座的各位有没有拿到心仪的offer,先恭喜一下成功入职理想公司的同学,秋招面试不顺的同学也别气馁,咱收拾好心情,春招再战! 这么久没更新,为了体现我的诚意,在 ...

  6. 大厂Java岗面试原题复盘,双非2年经验成功内推进入阿里

    双非本科,软件工程,2 年工作经验.有幸得到内推机会,参加了阿里 Java 岗的面试. 为此我做了非常多的准备,最终顺利拿到 offer,特分享一下这次的 5 轮技术面真题,以及一份阿里 P7 师兄整 ...

  7. java匿名对象赋初值_不想进BAT的Java程序员不是好程序员,BAT后端Java岗面试真题分享

    一. JDK/JRE/JVM 三者之间的联系与区别 JDK:开发者提供的开发工具箱,是给程序开发者用的.它包括完整的JRE(Java Runtime Environment),Java运行环境,还包含 ...

  8. java用axis方式调用webservice接口

    最近需要使用webservice接口,所以总结了一下全过程,希望能够对大家有所帮助. 开发使用的项目框架是ssm框架,tomcat服务器. 首先我们会拿到一个调用webservice接口的网址,类似这 ...

  9. Java岗面试12家大厂成功跳槽,含泪整理面经

    JAVA基础 JAVA异常分类及处理 异常分类 异常的处理方式 Throw和throws的区别 JAVA反射 动态语言 反射机制概念 (运行状态中知道类所有的属性和方法) Java反射API 反射使用 ...

最新文章

  1. 两款接口测试工具推荐
  2. DeepMind激起千层浪的这篇论文,并非无所不能
  3. android 图片压缩
  4. 阿里云mysql 日志_mysql日志-阿里云开发者社区
  5. maven使用testng_使用Maven Failsafe和TestNG分别运行单元测试和集成测试
  6. 高颜值在线绘图平台ImageGP系列教程 - 功能介绍
  7. java 的类和接口的变量调用
  8. java用hashmap_Java集合之HashMap的用法
  9. 我所认为的KVC和KVO
  10. 【C++】指针遍历二维数组若干种方法小结
  11. 由《炮灰模型——女生选择追求者模型》到“微软钻石题”
  12. opencv官网下不了了,分享各版本
  13. Magento国家代码缩写
  14. 找不到文件“c:/Users/Administrator/Desktop/vue_dom2/node_modules/postcss-discard-overridden/types/index.d.
  15. CSS网页布局中易犯的10个小错误
  16. 代理记账的基本流程是什么
  17. “超级计算机”——GPU云服务器
  18. air for andriod学习笔记1- 将现有fla文件生成为apk
  19. 企业微信生态下的会员管理系统
  20. Linux中 MySql设置审计及报错解决 can‘t initialize function ‘audit‘; Plugin initialization function failed

热门文章

  1. 【Python】如何下载Python编程快速上手—让繁琐工作自动化配套数据
  2. Folx Pro for Mac(下载工具)免激活版
  3. 怎样恢复已删除的iPhone数据?为您分享iPhone专用数据恢复软件
  4. java基础——包裹类型
  5. 隐藏与篡改Linux命令行参数
  6. Comunion 区块链深度学习系列|区块链进阶原理:转账
  7. flink-cdc同步mysql数据到hbase
  8. 微信小程序for实现九九乘法表
  9. 麦肯锡新报告《在元宇宙创造价值》, 2030 年元宇宙的价值可能会增长到 5 万亿美元
  10. 推荐的10本python豆瓣高分书单,小白到大佬!