桂林网站设计公司wordpress term_group

pingmian/2025/10/9 4:23:41/文章来源:
桂林网站设计公司,wordpress term_group,公司企业信息查询,网络优化排名培训本文介绍通过XML方式实现Spring AOP#xff0c;在上一篇中已经介绍了通过注解#xff0b;java配置的方式#xff0c;这篇文章主要是看XML中怎么配置#xff0c;直接上代码了#xff1a; 一、创建一个连接点 1⃣️定义接口 注意⚠️#xff1a;可以定义接口#xff0c;也…本文介绍通过XML方式实现Spring AOP在上一篇中已经介绍了通过注解java配置的方式这篇文章主要是看XML中怎么配置直接上代码了 一、创建一个连接点 1⃣️定义接口 注意⚠️可以定义接口也可以不定义定义接口时使用jdk动态代理不定义接口时使用cglib动态代理 1 //定义一个接口 2 public interface CoderProjectService { 3 public void getProjectInfo(CoderProject coderProject); 4 } 2⃣️接口实现类 1 //创建一个类来处理业务逻辑作为要织入切面中的被代理对象2 public class CoderProjectServiceImpl implements CoderProjectService {3 4 Override5 public void getProjectInfo(CoderProject coderProject) {6 System.out.println(项目名称 coderProject.getProjectName() 项目版本号: coderProject.getProjectVersion()7 项目描述 coderProject.getProjectDesc());8 }9 10 } 因为我要配置引入功能所以顺便定义要引入的接口及实现类 3⃣️创建引入接口 1 /* 2 * 定义一个新接口用来做一些验证 3 */ 4 public interface CheckExist { 5 public boolean checkIsEmpty(CoderProject project); 6 } 4⃣️引入接口实现类 1 /*2 * 定义一个类增加一些验证逻辑对被代理对象逻辑进行增强或完善3 */4 public class CheckExistImp implements CheckExist {5 6 Override7 public boolean checkIsEmpty(CoderProject project) {8 return project ! null;9 } 10 11 } 二、创建一个切面 1 /*2 * 定义一个切面没有任何注解需要在XML中进行配置3 */4 public class XmlAspect {5 6 // 引入增强类7 public CheckExistImp checkExistImp;8 9 public void before(CoderProject pro) { 10 System.out.println(项目名称  pro.getProjectName() before...); 11 } 12 13 public void around(ProceedingJoinPoint pjp) { 14 System.out.println(around before...); 15 try { 16 pjp.proceed(); 17 } catch (Throwable e) { 18 e.printStackTrace(); 19 } 20 System.out.println(around after...); 21 } 22 23 public void after() { 24 System.out.println(after...); 25 } 26 27 public void afterThrowing() { 28 System.out.println(afterThrowing...); 29 } 30 31 public void afterReturning() { 32 System.out.println(afterReturning...); 33 } 34 } 这个切面就是一个简单的类不过提供了四种通知的方法并且前置通知含有参数同时也将引入类作为属性添加进来之前的所有注解都会在XML文件中配置。 三、配置spring-aop-xml.xml配置文件 1 ?xml version1.0 encodingUTF-8?2 beans xmlnshttp://www.springframework.org/schema/beans3 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:aophttp://www.springframework.org/schema/aop4 xsi:schemaLocationhttp://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans.xsd 6 http://www.springframework.org/schema/aop 7 http://www.springframework.org/schema/aop/spring-aop.xsd8 !--定义切面bean --9 bean idxmlAspect classcom.hyc.aop.xml.XmlAspect/bean 10 !-- 定义被代理对象bean -- 11 bean idcoderProjectService classcom.hyc.aop.xml.CoderProjectServiceImpl/bean 12 !-- 定义切面的配置注解 -- 13 aop:config 14 aop:aspect refxmlAspect 15 !--定义一个切点 -- 16 aop:pointcut idgetProjectInfo expressionexecution(* com.hyc.aop.xml.CoderProjectServiceImpl.getProjectInfo(..)) / 17 !-- 定义四类通知-- 18 aop:before methodbefore pointcutexecution(* com.hyc.aop.xml.CoderProjectServiceImpl.getProjectInfo(..)) and args(pro))/ 19 aop:after methodafter pointcut-refgetProjectInfo/ 20 aop:after-returning methodafterReturning pointcut-refgetProjectInfo/ 21 aop:after-throwing methodafterThrowing pointcut-refgetProjectInfo/ 22 !-- 定义环绕通知 -- 23 aop:around methodaround pointcut-refgetProjectInfo/ 24 !--定义增强类 -- 25 aop:declare-parents types-matchingcom.hyc.aop.xml.CoderProjectServiceImpl implement-interfacecom.hyc.aop.xml.CheckExist default-implcom.hyc.aop.xml.CheckExistImp/ 26 /aop:aspect 27 /aop:config 28 29 !-- 定义一个project bean用来传给接入点方法 -- 30 bean idproject classcom.hyc.pojo.CoderProject 31 property nameid value1 / 32 property nameprojectName value云管理平台 / 33 property nameprojectVersion valueV1.0 / 34 property nameprojectDesc value云存储管理平台 / 35 /bean 36 /beans 注意⚠️在使用aop配置之前要先引入相关的命名空间如上面代码中的红色加粗部分。 其他的配置及含义都在注释中有接受不再赘述 四、创建测试方法 1 Test2 public void testAopByXml() {3 // 动态生成切面4 ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext(classpath*:spring-aop-xml.xml);5 // 获取被代理对象6 CoderProjectService coderProjectService (CoderProjectService) context.getBean(coderProjectService);7 // 获取项目类参数8 CoderProject project (CoderProject) context.getBean(project);9 // 获取增强类将被代理对象强制转化成增强类 10 CheckExist cd (CheckExist) coderProjectService; 11 if (cd.checkIsEmpty(project)) { 12 coderProjectService.getProjectInfo(project); 13 } else { 14 System.out.println(被代理对象不能为空); 15 } 16 } 测试结果如下 1 项目名称 云管理平台before... 2 around before... 3 项目名称云管理平台项目版本号:V1.0项目描述云存储管理平台 4 around after... 5 afterReturning... 6 after... 可以看到按照Sprinf AOP规定的流程执行了方法但是就如在上一篇文章中提到的使用XML方式时around的before方法会在before方法之后执行。 其实从实现过程就能看出来注解方式比XML要简单因为XML要配置很多东西而且容易出错所以一般来说以注解为主XML为辅。转载于:https://www.cnblogs.com/hellowhy/p/9721258.html

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

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

相关文章

广州购物网站建设报价青岛网站建设推进

很多小伙伴有自己的博客、淘宝或者共享文件网站,想要分享、推广自己的网址做成url文件,让别人点击这个url文件直接访问自己的网站。URL文件其实就一个超级链接,制作的方法很多,这里列举4种。 收藏网站直接拖拽 1.第一种&#xf…

网站除了wordpress外网站优化排名如何做

分析领域的一位资深人士对我非常无助地摇了摇头。 “这个程序员,不要吃烟花!”我也深深感到世界各地的农民代码都是一样的。 这让我想起了它,也是他。很多年前我提醒过我。——关注业务。从那以后,我一直在匆匆走上技术商业的双重…

门户网站开发报价网站建设昆明

React和Preact写className,我不太习惯使用模板字符串,不好看,看起来也不直观,写了如下两个库: react-runtime-clsx 和 preact-runtime-clsx,来辅助开发,可以更方便的处理className的问题&#x…

中卫网站推广制作电子商务实验网站建设实训过程

Image:114994698204558.jpgmatlabmatlab是矩阵实验室(matrix laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。matlab的基本数据单位是矩阵,它的指令表达式…

网站策划主要做什么工作百度地图wordpress

前言 在 Flutter 中,应用的顶级组件或根组件通常是在 main() 函数中通过 runApp() 方法创建的。这个组件通常是一个 MaterialApp、CupertinoApp、GetMaterialApp 或其他类似的应用框架组件。 以下是一个创建 MaterialApp 作为根组件的示例: void main()…

装修论坛网站有哪些吉安建设工程项目网站

141. 环形链表 设置一个fast指针,一个slow指针,fast一次走两步,slow一次走一步。如果fast和slow相遇,则说明有环。反之没相遇则无环。 注意快慢指针的while循环条件是fast.next ! null && fast.next.next ! null /*** …

手机网站建设原则湛江人才网招聘信息网

点击蓝字关注我们话不多扯,说事最近遇到奇怪电脑问题装的是7系统32位开机可以进入系统插着网线开机,就假死拔掉网线开机,正常,然后插上网线依旧正常再带着网线关机,开机后又成假死假死后拔下网线依旧恢复不了必须是不插…

工程技术seo做的不好的网站

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 今天我们利用GitHub上20K星星的项目 PHPMailer…

低价网站空间做网站zwnet

在当今世界,数据扮演着非常重要的角色。 如此众多的应用程序将各种类型的数据用于不同的操作,所以最重要的方面是应用程序之间的通信。 当应用程序可以通信时,它们之间的数据共享变得容易。 就像在亚洲运行的应用程序向在欧洲运行的应用程序…

有机大米网站建设方案做律师网站公司

在Vue中实现分布式日志收集与日志分析(使用ELK Stack) 日志收集和分析在现代应用程序中是至关重要的,它们可以帮助开发人员监视和诊断应用程序的行为,从而提高应用程序的稳定性和性能。ELK Stack(Elasticsearch、Logs…

做租车行网站咨询网络服务商

1. 题目 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。 如果不存在符合条件的连续子数组,返回 0。 示例: 输入: s 7, nums [2,3,1,2,4,3] 输出: 2 解释: 子数组 [4,3] 是该条件下的长度最小的连…

圣弓 网站建设抚顺建设网站

文章目录 前言python - excel 设置样式1. 准备2. 示例2.1. 给单元格设置样式"等线"、大小为24磅、斜体、红色颜色和粗体2.2. 给第二行设置样式"宋体"、大小为16磅、斜体、红色颜色和粗体2.3. 给第三行数据设置垂直居中和水平居中2.4. 给第四行设置行高为30…

做网站排名优化有用吗wordpress需要 伪静态

最近学习linux内核网络协议栈,把数据包接收流程大致理了一下,前面也看了瀚海书香兄的总结,感觉总结的比我精炼,抓住了主干,是一目了然的那种我的这篇本来是自己看得,因此把我自己学习中一些遇到的问题写了出…

昆明seo推广公司企业网站优化解决方案

一、进程通信 1.首先搞清楚一点,对于操作系统而言,进行通信的实际上是进程,而不是程序。 2.一个进程可以被认为是运行在端系统上的一个程序,当多个进程运行在相同的端系统上的时候,它们使用进程间通信机制相互通信。…

一个公司的网站怎么做专业网站制作全包

做HTML5网页,要播放视频,视频格式为mp4,结果浏览器只能听到声音,看不到画面。反复测试,多个浏览器均出现此问题。刚开始以为视频的格式不对,我是从MOV转的MP4格式,反复确认嵌入的视频确实是mp4格…

山西建设部网站网站一般用什么工具做

一 抓包分析技术初探 说明: 本篇章跟tcp/ip的知识没有关系,只是讲解tcpdump工具背景补充: 抓包是做报文分析的第一步敬畏心: 隔行如隔山,不要想当然 ① 背景 ② 抓包技术名词 1、捋顺这些技术的来龙去脉甚至八卦;2、这样我们在后续课程…

网站建设零基础自学视频教程深圳网络公司网站

本文采用资源下载链接,含完整工程代码 MAX17058-MAX17059STM32iic驱动设计内含有代码、详细设计过程文档,实际项目中使用代码,稳定可靠资源-CSDN文库 简介 MAX17058/MAX17059 IC是微小的锂离子(Li )在手持和便携式设备的电池电量计。MAX170…

本地拖拽网站建设室内设计师第一网站

(1)K8S概念 K8S是通过控制pod来控制容器进而控制程序的 service是沟通Pod和外键的桥梁,可以实现负载均衡的效果,加权负载的效果 (2)环境搭建-环境规划 (3)环境搭建-主机安装 使用…

美术馆网站建设方案书wordpress禁用主题更新

跳跃游戏 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。在这里插入图片…

学院网站建设申请报告网站设计的基本流程是什么

项目风险管理是项目管理中不可忽视的环节,如何识别并应对项目的风险对于项目的成功实施至关重要。本文将介绍风险管理的流程、风险分解结构、定性及定量风险评估方法,以及消极和积极的风险应对策略,旨在帮助读者更好地理解和应对项目风险。 …