面试题: Spring AOP是如何实现的? 它和AspectJ有什么区别?

Spring AOP是如何实现的? 它和AspectJ有什么区别?

  • 背景
  • 答案
    • SpringAOP实现
    • 与AspectJ区别
    • AOP 的几种实现方案
  • 个人评价

背景

想换工作, 学习一下面试题, 算是学习记录的输出.

答案

SpringAOP实现

Spring AOP 是利用的动态代理的机制, 如果一个Bean 实现了接口, 那么就会采用JDK动态代理来生成接口的代理对象, 如果一个Bean 没有实现接口, 那么就会采用CGLIB 来生成当前类的一个代理对象. 代理对象的作用就是代理原来的Bean 对象, 代理对象在执行某个方法时, 会在该方法的基础上增加一些切面逻辑, 使得我们可以利用AOP 来实现一些诸如登录校验, 权限控制, 日志记录等统一功能.

与AspectJ区别

Spring AOP 和 AspectJ 之间没有特别强的关系, AOP 表示面向切面编程, 这是一种思想, 各个组织或个人通过自己的技术来实现这种思想, AspectJ 就是其中之一, 它会在编译期对类进行增强, 所以要用AspectJ, 得用AspectJ 开发的编译器来编译你的项目. 而Spring AOP则是采用动态代理实现AOP, 只不过觉得AspectJ 中设计的那几个注解比较好, 比如: @Before, @After, @Around等, 同事也不给程序员带来困扰, 所以Spring AOP中对这几个注解进行了支持, 虽然注解是相同的, 但是底层的实现逻辑是完全不同的.

AOP 的几种实现方案

在这里插入图片描述

个人评价

2023年10月6日13:32:14
老师的答案已经很好了.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/95742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国庆中秋宅家自省: Python在Excel中绘图尝鲜

Python3中类的高级语法及实战 Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案 Python3数据科学包系列(一):数据分析实战 Python3数据科学包系列(二):数据分析实战 Python3数据科学包系列(三):数据分析实战 【一】国庆中秋: 悟 【国…

完美清晰,炫酷畅享——Perfectly Clear Video为你带来卓越的AI视频增强体验

在我们日常生活中,我们经常会拍摄和观看各种视频内容,无论是旅行记录、家庭聚会还是商务演示,我们都希望能够呈现出最清晰、最精彩的画面效果。而现在,有一个强大的工具可以帮助我们实现这一目标,那就是Perfectly Clea…

出去重复的列值(关键词:distinct)

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 语法格式: select distinct 列名 from 表名; 案例:查询emp表中,员工的职位(job),并去重…

网络层·IP协议

承接前文TCP协议-CSDN博客 简介 协议头格式 网段划分(重要) 划分方法 IP地址的数量限制(背景介绍) 私有IP地址和公网IP地址(提出解决思路) NAT技术(解决方法) 路由 网络层 在复杂的网络环境中确定一个合适的路径 IP协议 主机: 配有IP地址, 可以认为就是你的电脑; 路由器:…

计算机网络基础(一):网络系统概述、OSI七层模型、TCP/IP协议及数据传输

通信,在古代是通过书信与他人互通信息的意思。 今天,“通信”这个词的外沿已经得到了极大扩展,它目前的大意是指双方或多方借助某种媒介实现信息互通的行为。 如果按照当代汉语的方式理解“通信”,那么古代的互遣使节、飞鸽传书…

基于帝国主义竞争优化的BP神经网络(分类应用) - 附代码

基于帝国主义竞争优化的BP神经网络(分类应用) - 附代码 文章目录 基于帝国主义竞争优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.帝国主义竞争优化BP神经网络3.1 BP神经网络参数设置3.2 帝国主义竞争算…

Golang interface 接口的应用场景 使用细节

应用场景介绍 对初学者讲,理解接口的概念不算太难,难的是不知道什么时候使用接口,下面我例举几个应用场景: 1.说现在美国要制造轰炸机,武装直升机,专家只需把飞机需要的功能/规格定下来即可,然…

闲聊四种旅游方式

十一长假,先不写那些需要深度思考的话题,先写点轻松的。 关于旅游方式,其实也是受梁斌博士一条微博的一些触动,他说他认识个朋友,自由职业,到处旅游,却从不旺季出行,非常省钱&#x…

1700*C. Number of Ways(贪心前缀和)

Problem - 466C - Codeforces Number of Ways - 洛谷 解析: 首先判断所有数总和是否能被三整除。 之后遍历前缀和数组,如果某个位置的前缀和等于sum/3,则记录。 某个位置前缀和等于sum/3*2则记录答案。 注意由于分成三份,所以同…

微信开放平台第三方开发,实现代小程序备案申请

大家好,我是小悟 微信小程序备案整体流程总共分为五个环节:备案信息填写、平台初审、工信部短信核验、通管局审核和备案成功。 服务商可以代小程序发起备案申请。在申请小程序备案之前,需要确保小程序基本信息已填写完成、小程序至少存在一个…

Go Gin Gorm Casbin权限管理实现 - 1. Casbin概念介绍以及库使用

1. 核心概念 核心配置中含两部分模型配置以及策略配置,给出两个示范配置,在此基础上对实际请求进行分析。 1.1 Model 模型文件,存储了请求定义(request_definition),策略定义(policy_definition),匹配规则(matchers)&a…

推荐一款在线的JDK17中文文档

spring6.0及springboot3.0最低版本要求都是java17,换上java17是迟早的事,所以虽然我现在做的是java8,但是后面我想从java8直接飞升到java17,先做个准备,找到一个JDK17的中文文档,是在线的,地址&…

【小沐学Python】各种Web服务器汇总(Python、Node.js、PHP、httpd、Nginx)

文章目录 1、Web服务器2、Python2.1 简介2.2 安装2.3 使用2.3.1 http.server(命令)2.3.2 socketserver2.3.3 flask2.3.4 fastapi 3、NodeJS3.1 简介3.2 安装3.3 使用3.3.1 http-server(命令)3.3.2 http3.3.3 express 4、PHP4.1 简…

【MVC】C# MVC基础知识点、原理以及容器和管道

给自己一个目标,然后坚持一段时间,总会有收获和感悟! 国庆假期马上结束,闲暇时间,重温一遍C#关于MVC的技术,控制器、视图、模型,知识点和原理,小伙伴们还记得吗 目录 一、MVC知识点1…

Python柱形图

柱形图 柱形图,又称长条图、柱状统计图、条图、条状图、棒形图,是一种以长方形的长度为变量的统计图表。长条图用来比较两个或以上的价值(不同时间或者不同条件),只有一个变量,通常利用于较小的数据集分析…

用OpenCV(Python)获取图像的SIFT特征

import cv2 as cv import numpy as np import matplotlib.pyplot as plt imgcv.imread("../Lena.png") img_graycv.cvtColor(img,cv.COLOR_BGR2GRAY)#创建一个SIFI对象 siftcv.SIFT_create()#使用SIFT对象在灰度图像img_gray中检测关键点,结果存储在变量k…

迄今为止丨ChatGPT最强指令,一个可以让机器人生成机器人的Prompt,价值百万!

原文: 【ChatGPT调教】ChatGPT最强指令、让机器人为你生成机器人!-CSDN博客 说明:最好看原文 昨天,发现了一条可能是迄今为止,我见过最牛的,商业价值最高的ChatGPT指令。 通过这条指令,可以…

windows系统服务管理命令sc

sc可以用于管理系统服务、计划任务、系统日志等方面,是不可或缺的神器。 基本用法 在命令提示符下输入sc命令,然后按回车键。 上图展示的是sc命令的使用方法,支持哪些参数实现哪些功能 要查看系统所有服务列表,包括它们是否正在…

Ubuntu使用cmake和vscode开发自己的项目,引用自己的头文件和openCV

创建文件夹 mkdir my_proj 继续创建include 和 src文件夹,形成如下的目录结构 用vscode打开项目 创建add.h #ifndef ADD_H #define ADD_Hint add(int numA, int numB);#endif add.cpp #include "add.h"int add(int numA, int numB) {return numA nu…

程序人生 / 散文分享 / 生活感悟——【追光的日子】《爷爷的12本日历》,若你也共情,欢迎在评论区分享你的故事、观点、感悟和思考!

在一切变好之前,我们总要经历一些不开心的日子,这段日子也许很长,也许只是一觉醒来。有时候,选择快乐,更需要勇气。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3]…