Day 91

本文通过一个案例详细介绍了如何在Spring中使用AOP进行方法拦截,实现在不修改原有业务代码的情况下,为特定方法添加系统时间打印功能。首先在pom.xml引入aspectjweaver依赖,接着创建Dao接口及其实现类,然后定义通知类和通知,再设置切入点,并在SpringConfig中配置切面。最后通过测试类验证AOP的正确工作,成功在updatePoint()方法执行前后打印了当前时间。
摘要由CSDN通过智能技术生成

_Spring技术–AOP–案例分析

  1. 思路分析

    • 导入坐标(pom.xml)
    • 制作连接点方法(原始操作,Dao接口与实现类)
    • 制作共性功能(通知类与通知)
    • 定义切入点
    • 绑定切入点与通知的关系(切面)
  2. 整体架构如图所示在这里插入图片描述

  3. 首先在pom.xml文件夹中导入aspectjweaver包:在这里插入图片描述

  4. 首先来看业务层的实现类,之中共有3个方法,注意:在updatePoint()方法中是没有打印系统时间这个方法体的在这里插入图片描述

    我们需要做的就是在不修改PersonServiceImpl的情况下在运行updatePoint() 的时候打印系统的时间

  5. 在aop包下创建AOP的配置类:在这里插入图片描述

  6. 在SpringConfig中做spring的配置:在这里插入图片描述

  7. 最后在test文件中做方法测试:

    • 在这里插入图片描述

    • package com.Alvis.servicetest;
      
      import com.Alvis.config.SpringConfig;
      import com.Alvis.service.PersonService;
      import org.junit.Test;
      import org.junit.runner.RunWith;
      import org.springframework.context.ApplicationContext;
      import org.springframework.context.annotation.AnnotationConfigApplicationContext;
      import org.springframework.test.context.ContextConfiguration;
      import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
      
      
      // 设定类运行器
      @RunWith(SpringJUnit4ClassRunner.class)
      @ContextConfiguration(classes = SpringConfig.class)
      
      public class ServiceTest {
          @Test
          public void App_01() {
              ApplicationContext apx = new AnnotationConfigApplicationContext(SpringConfig.class);
              PersonService personService = apx.getBean(PersonService.class);
              personService.run();
          }
      
          @Test
          public void App_02() {
              ApplicationContext apx = new AnnotationConfigApplicationContext(SpringConfig.class);
              PersonService personService = apx.getBean(PersonService.class);
              personService.updatePoint();
          }
      }
      ================================================
      824, 2022 12:24:35 上午 org.springframework.test.context.support.AbstractTestContextBootstrapper getDefaultTestExecutionListenerClassNames
      信息: Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener, org.springframework.test.context.event.EventPublishingTestExecutionListener]
      824, 2022 12:24:35 上午 org.springframework.test.context.support.AbstractTestContextBootstrapper getTestExecutionListeners
      信息: Using TestExecutionListeners: [org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@7714e963, org.springframework.test.context.support.DependencyInjectionTestExecutionListener@20ce78ec, org.springframework.test.context.support.DirtiesContextTestExecutionListener@393671df, org.springframework.test.context.event.EventPublishingTestExecutionListener@56620197]
      
      
      1661271876399
      update Point...and add currentTime
      
      进程已结束,退出代码0
      
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你遇到的错误信息"'素材\day03\code\05-脚手架相关代码\vue-demo1\node_modules\.bin\' 不是内部或外部命令,也不是可运行的程序 或批处理文件。internal/modules/cjs/loader.js:883 throw err;"通常是由于无法找到或执行指定的命令导致的。根据你提供的引用内容,我可以看出这个错误可能与你的项目目录和配置有关。 首先,你引用的中的文件说明提供了项目的结构,其中包括了`node_modules`文件夹。这个文件夹是由vue-cli创建的一个基于webpack的vue.js项目的一部分。它包含了项目所需的所有依赖模块。 其次,你引用的中提到,`node_modules`文件夹是为vue.js项目而创建的,并且是基于webpack的。 根据这些信息,我可以推断你遇到的错误可能是由于无法找到或执行`'素材\day03\code\05-脚手架相关代码\vue-demo1\node_modules\.bin\'`这个路径下的命令导致的。 为了解决这个问题,你可以尝试以下几个步骤: 1. 确保你处于正确的项目目录下,即`'素材\day03\code\05-脚手架相关代码\vue-demo1\'`。你可以使用`cd`命令切换到正确的目录。 2. 检查一下你的项目是否完整,包括所有的依赖模块是否正确安装。你可以运行`npm install`命令来安装项目所需的依赖。如果你已经安装了依赖,可以尝试删除`node_modules`文件夹并重新运行`npm install`来重新安装依赖。 3. 确保你已经正确设置了项目的运行环境和配置。在运行项目之前,你可能需要先进行一些配置工作,比如设置API代理等。你可以参考中提到的关于启动本地开发服务器和API代理的文档来进行配置。 总结起来,你遇到的错误可能是由于找不到或执行指定的命令导致的。你可以尝试按照上述步骤检查和解决问题。希望这些信息能对你有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)...](https://blog.csdn.net/weixin_30312563/article/details/96063042)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Vue安装过程及环境配置](https://blog.csdn.net/cjw12581/article/details/125294362)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值