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

文末java面试题,进阶技术大纲,架构资料分享

我将这三次阿里面试的题目全部分专题整理出来,并附带上详细的答案解析,生成了一份PDF文档,有兴趣的朋友们可以点击这里即可免费领取

  • 第一个要分享给大家的就是算法和数据结构

  • 第二个就是数据库的高频知识点与性能优化

  • 第三个则是并发编程(72个知识点学习)

  • 最后一个是各大JAVA架构专题的面试点+解析+我的一些学习的书籍资料

  • 最后一个是各大JAVA架构专题的面试点+解析+我的一些学习的书籍资料

[外链图片转存中…(img-rugHfmEj-1627546594903)]

还有更多的Redis、MySQL、JVM、Kafka、微服务、Spring全家桶等学习笔记这里就不一一列举出来

Java超市管理系统项目相关推荐

  1. java超市管理系统项目,HR的话扎心了

    一.Netty概念及体系结构 01 Netty--异步和事件驱动 Java网络编程NIO选择器 Netty的简介.谁在使用Netty.异步和事件驱动 Netty的核心组件 02 你的第一款Netty应 ...

  2. 计算机毕业设计Java超市管理系统(源码+系统+mysql数据库+lw文档

    计算机毕业设计Java超市管理系统(源码+系统+mysql数据库+lw文档 计算机毕业设计Java超市管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语言 ...

  3. smbms超市管理系统项目总结

    前言 跟着 遇见狂神说 javaWeb课程做的smbms超市管理系统项目 具体实现在项目中可看代码(无需收费)点击跳转到项目下载 一.smbms超市管理系统介绍 对于用户的信息存储,完成了用户登录验证 ...

  4. 基于jsp(java)超市管理系统的设计和开发(含源文件)

    获取项目源文件,联系Q:1225467431,可指导毕设,课设 摘 要 随着网络技术的发展.计算机应用水平的提高的扩大,原来系统的时效性.数据的正确性.操作的方便性上都存在不足,已影响到系统的正常使用 ...

  5. Java 超市管理系统、商品进销存系统 -窗体程序

    今天为大家分享一个java语言编写的超市管理系统,目前系统功能已经很全面,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步 开发环境 开发语 ...

  6. JSP+Servlet+MySql超市管理系统项目源码

    一. 开发背景 软件名称:超市管理系统(servlet+jsp) 使用对象:学习或了解过 java 基础课程,开始接触 javaWeb 的学生和软件爱好者 源码链接https://pan.baidu. ...

  7. java超市管理系统ppt_基于java web超市管理系统.ppt

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspJava 基于java web超市管理系统.ppt14页 本文档 ...

  8. java超市管理系统后台_Javaweb项目:超市管理系统

    (1)实现技术:MySQL+jsp+servlet+tomcat+maven:是一个maven项目. (2)MVC的三个部分全部自己手敲,没怎么抽取代码,看着可能冗余,大概这就是新手吧. (3)功能基 ...

  9. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java超市管理系统ztnrw

    对于计算机专业的学生最头疼的就是临近毕业时的毕业设计,对于如何选题,技术选型等这些问题,难道了大部分人,确实,还没毕业的学生对于这些问题还比较陌生,只有学习的理论知识,没有实战经验怎么能独自完成毕业设 ...

最新文章

  1. python的id方法_python中id()函数的实用研究实例
  2. 一个推荐系统,实现完整的设计-在百度搜索关键词推荐案例
  3. Matlab中Ksdensity()函数的用途 (2011-04-02 16:55:17)
  4. 安装完matlab7.0(2009版本问题)但无法运行
  5. 【Python】skimage模块
  6. 如何让代码更易于维护_如何轻松地使您的网站更易于访问
  7. react(93)--成功置空
  8. 11. OD-Delphi程序暴力破解
  9. 几种实用的 pythonic 语法
  10. Leetcode每日一题:925.Long Pressed Name(长按键入)
  11. 接口,实现类,对象方法的调用关系.(查看程序输出)
  12. Java Tomcat SSL 服务端/客户端双向认证
  13. 为什么鼠标光标不是一条竖线而是一个小方块
  14. 公式冒号是什么意思_冒号是什么意思
  15. win7配置计算机失败还原更改,win7系统更新失败 卡在还原更改处的解决方法
  16. postgresql垃圾清理插件pg_repack
  17. windows 防火墙日志_如何使用Windows防火墙日志跟踪防火墙活动
  18. 树莓派4B开机自启动Python程序,发送WIFI-IP至指定邮箱
  19. Java毕设项目-商城管理系统-基于J2EE/SSM化妆品商城系统的设计与实现
  20. 濒临死亡的校园BBS

热门文章

  1. 高温高湿环境人体热负荷预警仿真模型
  2. displaytag的使用
  3. 模具腐蚀皮纹工艺原理及其流程
  4. python的staticmethod,classmethod和装饰器以及闭包的爱恨情仇
  5. 手机QQ协议抓包教程
  6. Java项目生成静态页面
  7. ANSYS多孔结构 多孔材料 孔隙结构建模教程
  8. 益聚星荣:DR钻戒,“一生只送一人”的暴利生意
  9. 认是计算机第2节知识点,2.2《优化计算机》教案
  10. 【Linux工具】-vim介绍