一步迅速了解Spring框架中的几大特点

news2024/9/23 1:29:59

一,Spring框架的特点1 :AOP

        1, AOP全称:  Aspect Oriented Programming

        2,  AOP主要是用面向切面编程思想处理问题,面向切面编程是对面向对象编程的补充和延续

        3,面向切面编程思想

        面向切面编程思想是将我们程序中的非业务代码提交事务,打印日志,权限验证,统一的异常处理,等等提取分离出来,然后在调用业务代码时,通过一个代理对象帮助我们调用这些提取出来的非业务代码,这样在业务代码不用显示的调用非业务代码,做到的业务代码和非业务代码的分离,降低了耦合度

        4,核心原理:

        使用动态代理的方式在执行方法前后或者出现异常的时候做加入相关的逻辑

        好处:模块之间的耦合度降低了

        原理:动态代理模式 给业务代码生成代理对象

        AOP 编程思想是Java中的,不是Spring专有的,是Spring使用AOP这一编程思想

        5,使用案例:

        事务处理:开启事务,关闭事务,出现异常后回滚事务
        权限判断:在执行方法前,判断是否具有权限
        日志:在执行前进行日志处理

二,AOP的基本概念

连接点(Joinpoint):类中可以被增强(加功能)的方法,这个方法就被称为连接点

切入点(pointcut):类中实际被增强的方法(实际实现的连接点)

通知(Advice): 通知是指一个切面在特定的连接点要做的事情(增强的功能)。通
知分为方法执行前通知,方法执行后通知,环绕通知等

目标(Target):代理的目标类(连接点和切入点所在的类)

代理(Proxy):向目标对象 应用通知时 创建的代理对象

三,关于spring框架中的 AOP 的实现

        对于 AOP 这种编程思想,很多框架都进行了实现。Spring 就是其中之一,
可以完成面向切面编程。
        AspectJ 是一个基于 Java 语言的 AOP 框架,它提供了强大的 AOP 功能,且其实
现方式更为简捷,使用更为方便, 而且还支持注解式开发。所以,Spring 又
将 AspectJ 的对于 AOP 的实现也引入到了自己的框架中。

1,第一步 下载 AOP 相关 jar

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>

2,第二步基于注解方式实现

启动 AspectJ 支持:<aop:aspectj-autoproxy />

<aop:aspectj-autoproxy />

在Spring.xml文件中添加自动代理

四,AspectJ 中常用的通知有五种类型:

前置通知,后置通知,环绕通知,异常通知,返回通知.

@Before 前置通知:方法执行之前

@After 后置通知:方法执行之后,无论是否出现异常

@AfterReturnning 返回通知:方法成功执行之后通知,出现异常不执行

@AfterThrowing 异常通知:抛出异常之后通知

@Around 环绕通知:方法执行前后都有通知

实例:

定义通知:
@Component
@Aspect
public class AOPDemo {
@Before("execution(* com.ff.spring.dao.UserDao.*(..))")
public void saveLog(){
System.out.println("saveLog");
}
@AfterThrowing(value = "execution(*com.ff.spring.dao.UserDao.*(..))",throwing = "e")
public void afterthrow(Throwable e){
System.out.println("afterthrow");
}
public void aroundAdvice(ProceedingJoinPoint joinPoint){
try {
//前置通知
Object[] objects = joinPoint.getArgs();
joinPoint.proceed();//调用我们自己的目标方法
//返回通知
} catch (Throwable throwable) {
throwable.printStackTrace();
//异常通知
}
//后置通知
}
}

表达式解析

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

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

相关文章

[SimCLR v2] Big Self-Supervised Models are Strong Semi-Supervised Learners

1、目的 借助无监督预训练来提升半监督学习的效果 2、方法 1&#xff09;unsupervised/self-supervised pretrain -> task-agnostic -> big (deep and wide) neural network可以有效提升准确性 -> improvements upon SimCLR larger ResNet models&#xff1b;deeper …

03:logic软件操作界面及常用设置

1.打开logic软件 2显示工具栏 3.logic软件常用设置 3.1常规页设置 3.2设计页设置 3.3颜色设置

在发布您的插件之前,如何在 ONLYOFFICE 插件市场中进行测试?

ONLYOFFICE 插件为我们提供了强大的定制和拓展功能。作为插件开发人员&#xff0c;您可能希望在发布之前&#xff0c;在插件管理器中预览您的插件。这篇文章将指导您如何在 ONLYOFFICE 插件市场中预览插件。 关于 ONLYOFFICE ONLYOFFICE 是一个国际开源项目&#xff0c;由领先…

大数据智能风控核心:模型

概述 模型 线性判别分析方法&#xff0c;Sir Ronald Fisher最早提出模型评分的概念。 个人FICO模型信用分。 巴塞尔委员会发布巴塞尔Ⅱ协议&#xff0c;推出内部评级法&#xff08;Internal Rating Based Approach&#xff0c;IRB&#xff09;​。IRB综合考虑客户评级和债项…

HLS报错之:Export RTL报错 “ERROR: [IMPL 213-28] Failed to generate IP.“

原因&#xff1a;官方bug 解决办法&#xff1a;下载补丁&#xff08;补丁适用于2014年至2021年的多个Vivado版本&#xff09;&#xff0c;并添加到对应路径下即可。 注意&#xff1a;windows下该方法试用。 补丁连接 我这里下载到xilinx的目录下并解压&#xff1a; 点进去找…

微服务集成 Seata

文章目录 引入依赖配置TC地址其它服务使用 本篇文章介绍分布式架构下, 各个微服务之间要达成分布式事务, 引入 Seata 的步骤和使用方式. 引入依赖 首先&#xff0c;在 order-service 服务中引入依赖&#xff1a; <!--seata--> <dependency><groupId>com.al…

YOLOv8改进 | 模块缝合 | C2f融合多尺度表征学习模块 【含OD、RTDETR、OBB等yaml文件】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

String框架基础补充

前言 本文将继续上一篇文章的内容对 Spring 数据访问层管理,Spring集成mybatis等知识进行补充,未看过上一篇文章的小伙伴可以点击下方链接,跳转观看上一篇文章Spring框架基础https://mp.csdn.net/mp_blog/creation/editor/141639879 Spring数据访问层管理 首先,我们需要知道 : …

软考高项彻底没用了?谁说的?站出来,我保证不笑场!

哎呀&#xff0c;最近这风言风语可不少啊&#xff0c;说咱们的软考高项证书成了“过气网红”&#xff0c;彻底没用了&#xff1f;这可真是让我哭笑不得&#xff0c;咱们得好好聊聊这个话题&#xff0c;不能让这“谣言”满天飞啊&#xff01; 首先&#xff0c;我得说&#xff0…

直播电商如何重构人场关系?推荐这套电商精细化运营方案!

随着电子商务的不断发展&#xff0c;直播电商和货架电商已经成为两大主流的在线购物模式。它们各自以独特的方式满足消费者的购物需求&#xff0c;同时也有不同的商业挑战和机遇。本文将从消费者行为、技术应用、品牌策略等多个角度分析这两种电商模式的核心区别。同时&#xf…

大众集团25届校招社招网申入职SHL测评题库:综合能力测评、性格问卷、英语测评考什么?

恭喜您通过大众汽车(中国)科技有限公司的简历初。请点击下面的测评链接&#xff0c;在5天内完成测评&#xff0c;过期失效(例:3.11收到链接&#xff0c;3.15为最后一天有效期)。每位人选只有一次测评机会。 ​大众汽车入职测试细节: 1.性格问卷:25 分钟 2.综合能力:46 分钟&a…

Python 轻松去除验证码干扰点,让识别不再犯难

Python 轻松去除验证码干扰点&#xff0c;让识别不再犯难 引言一、干扰点噪声二、图片降噪三、测试运行结果写在最后 作者&#xff1a;高玉涵 时间&#xff1a;2024.8.29 21:52 博客&#xff1a;blog.csdn.net/cg_i 环境&#xff1a;Windows10、Python 3.11.3、PIL、Tesseract-…

Unet改进10:在不同位置添加CPCA||通道先验卷积注意力机制

本文内容:在不同位置添加CPCA注意力机制 目录 论文简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 论文简介 低对比度和显著的器官形状变化等特征经常出现在医学图像中。现有注意机制的自适应能力普遍不足,限制了医学影像分割性能的提高。本文提出了一种有效的通道先验卷积…

储能电池热失控监测系统的研发难点是什么?

​ ​​储能电池热失控监测系统的研发难点主要包括以下几个方面&#xff1a; ​ ​1.准确的早期预警 ​ ​在热失控发生的早期阶段&#xff0c;电池的温度、电压、电流等特征参数变化可能非常缓慢&#xff0c;通过传统的监测方法难以及早地监测到电池故障。而此时电池…

使用C++,仿照string类,实现myString

类由结构体演化而来&#xff0c;只需要将struct改成关键字class&#xff0c;就定义了一个类 C中类和结构体的区别&#xff1a;默认的权限不同&#xff0c;结构体中默认权限为public&#xff0c;类中默认权限为private 默认的继承方式不同&#xff0c;结构体的默认继承方式为p…

LLM的发展简述

文章目录 1. NLP的发展简史2. LLM 的进展3. 参考 1. NLP的发展简史 信息理论的创立&#xff1a;20世纪50年代&#xff0c;Claude Shannon 奠定了信息理论的基础&#xff0c;引入了熵和冗余等概念&#xff0c;对 NLP 和计算语言学产生了深远影响。 形式语法的发展&#xff1a;…

代码随想录(day8)—环形链表

题目 预备知识点&#xff1a; for和while的区别 while语句属于循环语句&#xff0c;在判断是&#xff0c;如果条件为true&#xff0c;则会继续判断&#xff0c;直到false为止&#xff0c;即会进行多次判断&#xff08;除非一开始条件就是错的&#xff09;。 if语句属于条件判…

炫光HUD杂散光测试方法及设备

HUD杂散光测试概述 HUD&#xff08;Heads-Up Display&#xff09;抬头显示器是现代汽车中的一项先进技术&#xff0c;它可以将重要信息如速度、导航等投射在驾驶员的视线前方&#xff0c;从而减少低头查看仪表盘的次数&#xff0c;提高行车安全。然而&#xff0c;HUD在实际使用…

数据主权与隐私保护的深入探讨

随着数字化进程的加速&#xff0c;数据已成为当今世界的重要资源。数据主权和隐私保护这两个概念也越来越受到关注。数据主权涉及到国家对数据的控制权和管理权&#xff0c;而隐私保护则关乎个人数据的安全性和隐私权利。两者相互交织&#xff0c;共同塑造了数字时代的法律、经…

PTA - python暑假题集1

目录 7-1 Hello World!7-2 计算摄氏温度7-3 计算物体自由下落的距离7-4 整数四则运算7-5 求整数均值7-6 输出带框文字7-7 整数152的各位数字7-8 计算火车运行时间7-9 计算存款利息7-10 逆序的三位数7-11 重要的话说三遍7-12 后天7-13 I Love GPLT7-14 是不是太胖了7-15 计算指数…