域名和空间网站wap建站教程

张小明 2026/1/9 6:36:03
域名和空间网站,wap建站教程,电子商城网站开发软件,花卉网站建设策划Spring AOP是什么#xff1f;Spring AOP是面向切面编程#xff0c;他与OOP#xff08;面向对象编程#xff09;是相辅相成的。在 OOP 中#xff0c;以类作为程序的基本单元#xff0c;而 AOP 中的基本单元是 Aspect#xff08;切面#xff09;。在业务处理代码中#…Spring AOP是什么Spring AOP是面向切面编程他与OOP面向对象编程是相辅相成的。在 OOP 中以类作为程序的基本单元而 AOP 中的基本单元是 Aspect切面。在业务处理代码中通常都有日志记录、性能统计、安全控制、事务处理、异常处理等操作。尽管使用 OOP 可以通过封装或继承的方式达到代码的重用但仍然存在同样的代码分散到各个方法中。因此采用 OOP 处理日志记录等操作不仅增加了开发者的工作量而且提高了升级维护的困难。为了解决此类问题AOP 思想应运而生。AOP 采取横向抽取机制即将分散在各个方法中的重复代码提取出来然后在程序编译或运行阶段再将这些抽取出来的代码应用到需要执行的地方。这种横向抽取机制采用传统的 OOP 是无法办到的因为 OOP 实现的是父子关系的纵向重用。但是AOP 不是 OOP 的替代品而是 OOP 的补充它们是相辅相成的。Spring通知类型①环绕通知环绕通知是在目标方法执行前和执行后实施增强可以应用于日志记录、事务处理等。②前置通知前置通知是在目标方法执行前实施增强可应用于权限管理等。③后置返回通知后置返回通知是在目标方法成功执行后实施增强可应用于关闭流、删除临时文件等。④后置最终通知后置通知是在目标方法执行后实施增强与后置返回通知不同的是不管是否发生异常都要执行该通知可应用于释放资源。⑤异常通知异常通知是在方法抛出异常后实施增强可以应用于异常处理、日志记录等。⑥引入通知引入通知是在目标类中添加一些新的方法和属性可以应用于修改目标类增强类。举例使用 Eclipse 创建一个名为 Myaspect 的 Dynamic Web Project必要的 jar 已经复制到 WEB-INF/lib 目录中。在 src 目录中创建一个名为 aspectj.dao 的包并在该包中创建接口 catDao 和接口实现类 catDaoImpl。该实现类作为目标类在切面类中对其所有方法进行增强处理。package aspectj.dao; public interface catDao { public void eat(); public void sleep(); public void play(); } package aspectj.dao; import org.springframework.stereotype.Repository; Repository(catDao) public class catDaoImp implements catDao { Override public void eat() { System.out.println(小猫吃饭); } Override public void sleep() { System.out.println(小猫睡觉); } Override public void play() { System.out.println(小猫玩); } }在 src 目录中创建一个名为 aspectj.annotation 的包并在该包中创建切面类 MyAspect。在该类中用 Aspect 注解定义一个切面类并通过定义方法表示切入点名称。在目标类每一个方法上做切面成消息和目标方法名称输出完成方式和消息为前置通知主人召唤小猫后置通知小猫自主活动环绕开始执行目标方法前开启摄像头环绕结束执行目标方法后关闭摄像头/** * 切面类在此类中编写各种类型通知 */ Aspect //Aspect 声明一个切面 Component //Component 让此切面成为 Spring 容器管理的 Bean public class MyAspect { /** * 定义切入点通知增强哪些方法。 * execution(* aspectj.dao.*.*(..)) 是定义切入点表达式 * 该切入点表达式的意思是匹配aspectj.dao包中任意的任意方法的执行。 * 其中execution()是表达式的主体第一个*表示返回类型*代表所有类型 * aspectj.dao表示需要匹配的包名后面第二个*表示类名使用*代表匹配包中所有的类 * 第三个*表示方法名使用*表示所有方法后面(..)表示方法的参数其中“..”表示任意参数。 * 另外注意第一个*与包名之间有一个空格。 */ Pointcut(execution(* aspectj.dao.*.*(..))) private void myPointCut() { } /** * 前置通知使用 Joinpoint 接口作为参数获得目标对象信息 */ Before(myPointCut()) //myPointCut()是切入点的定义方法 public void before(JoinPoint jp) { System.out.print(前置通知主人召唤小猫); System.out.println(目标类对象 jp.getTarget() 被增强处理的方法 jp.getSignature().getName()); } /** * 后置返回通知 */ AfterReturning(myPointCut()) public void afterReturning(JoinPoint jp) { System.out.print(后置返回通知 小猫自主活动); System.out.println(被增强处理的方法 jp.getSignature().getName()); } /** * 环绕通知 * ProceedingJoinPoint 是 JoinPoint 子接口代表可以执行的目标方法 * 返回值类型必须是 Object * 必须有一个参数是 ProceedingJoinPoint 类型 * 必须是 throws Throwable */ Around(myPointCut()) public Object around(ProceedingJoinPoint pjp) throws Throwable { //开始 System.out.println(环绕开始执行目标方法前开启摄像头); //执行当前目标方法 Object obj pjp.proceed(); //结束 System.out.println(环绕结束执行目标方法后关闭摄像头); return obj; } /** * 异常通知 */ AfterThrowing(value myPointCut(), throwing e) public void except(Throwable e) { System.out.println(异常通知 程序执行异常 e.getMessage()); } /** * 后置最终通知 */ After(myPointCut()) public void after() { System.out.println(最终通知模拟释放资源); } }此处要着重会使用Joinpoint接口作为参数获取目标对象信息
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做网站推广赚钱吗山西省建设厅官方网站

【获取方式】trlm-135m 【免费下载链接】trlm-135m 项目地址: https://ai.gitcode.com/hf_mirrors/Shekswess/trlm-135m 项目地址: https://gitcode.com/hf_mirrors/Shekswess/trlm-135m在AI模型参数竞赛愈演愈烈的今天,一款仅含135M参数的轻量级模型正悄然改…

张小明 2026/1/6 7:12:49 网站建设

在国外做h网站怎么样做旅游网站的原因

Micropython HC-SR04超声波传感器完全掌握终极指南 【免费下载链接】micropython-hcsr04 Micropython driver for ultrasonic sensor HC-SR04 项目地址: https://gitcode.com/gh_mirrors/mi/micropython-hcsr04 Micropython HC-SR04项目是一个专门为HC-SR04超声波传感器…

张小明 2026/1/5 9:04:01 网站建设

焦作建设企业网站公司定制网站开发食道里感觉有东西堵

臭氧污染不仅对气候有重要影响,而且对人体健康、植物生长均有严重损害。为了高效、精准地治理区域大气臭氧污染,需要了解臭氧生成的主要途径及其前体物。OBM箱模型可用于模拟光化学污染的发生、演变过程,研究臭氧的生成机制和进行敏感性分析&…

张小明 2026/1/6 4:40:19 网站建设

天津广告设计公司排名新乡网站优化公司

可配置的嵌套向量中断控制器与核心紧密耦合。它处理与非屏蔽中断(NMI)和屏蔽中断相关的物理线事件,以及 Cortex-M0异常。它提供了灵活的优先级管理。 处理器核心与NVIC的紧密耦合显著减少了中断事件与相应中断服务例程(ISR)开始之间的延迟。ISR向量列在向量表中&…

张小明 2026/1/8 9:25:04 网站建设

网站反链一般怎么做wordpress评论通知

三法则 C98/03 年代:如果一个类需要显式定义以下三者之一,那么它很可能需要显式定义所有三个: 析构函数 拷贝构造函数 拷贝赋值运算符 原因:如果一个类需要自定义析构函数,通常是因为它管理着动态内存或其他资源&…

张小明 2026/1/7 18:14:56 网站建设

做移动端活动页面参考网站如何加强企业网站建设论文

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

张小明 2026/1/6 4:28:54 网站建设